Trong những năm gần đây, PHP đã trở thành một trong những ngôn ngữ phổ dụng nhất trong lập trình ứng dụng web. Ưu điểm của PHP là mã nguồn mở, miễn phí và không yêu cầu cấu hình hệ thống máy chủ cao. Tuy nhiên, PHP có một số điểm yếu, một trong số đó là tốc độ. Dù vậy, nếu mã nguồn được viết hợp lí, sử dụng PHP bạn hoàn toàn có thể tạo được ứng dụng chạy với tốc độ vượt trội.
Các thủ thuật tăng tốc:
+ Để có thể giải thích rõ ràng, chúng ta bắt đầu bằng một ví dụ:



require_once 'my_functions.php';

function format_str($str) {

$str = str_replace('0', '1', $str);

return $str;

}

$my_array = array();

// Mã nguồn để đưa dữ liệu vào $my_array ở đây

for ($i = 0; $i < count($my_array); $i++) {

if (ereg('^[0-9]+$', $my_array[$i]) && (strlen($my_array[$i]) > 1)) {

$my_array[$i] = format_str($my_array[$i]);

print $my_array[$i].”
”;

}

}
- Vấn đề đầu tiên là việc sử dụng require_once làm chương trình chậm đi, khi đó PHP sẽ phải kiểm tra xem file đã được nạp trước đó chưa. Tất nhiên, trong nhiều trường hợp, điều này là không tránh khỏi. Nhưng nếu không thực sự cần thiết, bạn nên sử dụng require hoặc include thay vì require_once/include_once.



require 'my_functions.php'
- Với đoạn mã trên, ở mỗi vòng lặp, PHP sẽ phải chạy count($my_array) và so sánh kết quả với $i. Tuy nhiên, vì dữ liệu của $my_array là không đổi, chạy count với mỗi lần lặp là không cần thiết. Vòng lặp trên có thể được viết lại nhanh hơn như sau:



$c = count($my_array);

for ($i = 0; $i < $c; $i++) {
- Hoặc gọn hơn, có thể viết:



for ($i = 0, $c = count($my_array); $i < $c; $i++) {
Như vậy, count($my_array) sẽ chỉ phải chạy một lần duy nhất, ngay cả khi mảng có vài nghìn phần tử.

Một vấn đề nữa với đoạn mã trên là việc sử dụng print, trong trường hợp này bạn nên sử dụng echo vì echo nhanh hơn khoảng 20% so với print. Lí do đơn giản là vì print làm nhiều việc hơn echo. Một là print thêm vào cuối chuỗi tham số một dấu xuống dòng (
), hai là nó cũng trả về kết quả (luôn là 1). Khi dùng echo, bạn còn có thể đưa cả 2 chuỗi vào làm tham số, như vậy PHP sẽ không phải làm thao tác nối 2 chuỗi lại với nhau và chỉ đưa từng chuỗi ra màn hình http://cenrea.com một.

Đoạn mã trên còn sử dụng dấu nháy kép bao quanh
. Nếu sử dụng nháy đơn, PHP sẽ không phải tìm biến PHP cũng như các giá trị đặc biệt khác trong chuỗi (ví dụ như
,
, \t) và vì vậy mặc nhiên sẽ nhanh hơn.

Dòng mã in dữ liệu ra màn hình vì vậy có thể viết thành:



echo $my_array[$i], '
';
- Ngoài ra, đoạn mã trên sử dụng ereg để kiểm tra xem chuỗi chỉ bao gồm một hoặc nhiều chữ số. Bạn không nên dùng ereg mặc dù ereg có vẻ dễ sử dụng hơn với nhiều người. Thay vào đó nên sử dụng preg_match, lí do là vì preg_match có tác dụng y hệt kèm theo ưu điểm vượt trội về tốc độ. Kể từ PHP 5.3.0, ereg không còn được khuyến khích sử dụng, dùng ereg sẽ gây ra khuyến cáo E_DEPRECATED. Dòng trên có thể viết lại thành:



if (preg_match('!^[0-9]+$!', $my_array[$i]) && (strlen($my_array[$i]) > 1)) {
::Kết luận

Với một đoạn mã ngắn như ví dụ trong bài viết này bạn khó có thể nhận thấy được khác biệt về tốc độ trừ khi tính tốc độ chạy bằng “xdebug”. Tuy nhiên, với một chương trình PHP hoàn chỉnh hoặc với một số lượng lớn người sử dụng cùng lúc, áp dụng các phương pháp nêu trong bài này có thể giúp chương trình của bạn tăng tốc đáng http://dangkyoffice.com kể./.