Tối ưu hóa PHP - những điểm cần chú ý

 33 điểm tối ưu hóa PHP cần chú ý sau sẽ giúp bạn cải thiện được phần nào cho việc tối ưu hóa website của mình và giúp nó truy cập nhanh hơn

 

tối ưu hóa php

Tối ưu hóa PHP là công việc cần thiết cho các coder


1.  Hàm echo thực hiện nhanh hơn hàm print

2. Đối với việc sử lý chuỗi bạn nên gói chuỗi bằng dấu nháy đơn ('') thay vì dấu nháy kép("") php sẽ thực hiện nhanh hơn (lý do: khi sử dụng dấu nháy kép php sẽ quét các biến trong đấy nếu có để truyền dữ liệu vào) 

3. Sử dụng hàm Sprintf thay vì sử dụng các biến chứa trong hai dấu ngoặc kép tốc độ sẽ nhanh hơn khoảng 10 lần 

4. Sử dụng hàm echo với nhiều tham số thay cho việc nối các xâu lại với nhau 

Ví dụ : echo 'Hello' , $world ; thay vì echo 'Hello ' . $world ; 

5. Cần tính toán trước giá trị cao nhất trong các vòng lặp. Ví dụ : for ($x=0; $x < count($array); $x), nó sẽ gọi hàm count() tại mỗi vòng lặp, ta nên sử dụng biến $max=count($array) để thay thế khi đó vòng lặp được viết lại thành : 

    $max=count($array); 

    for ($x=0; $x < $max; $x) 

6. Tiến hành Unset hoặc null các biến tạo ra sau khi sử dụng xong để giải phóng bộ nhớ, đặc biệt là các mảng dữ liệu lớn 

7. Tránh sử dụng __get, __set, __autoload. 

8. Thay thế require() bằng require_once() 

9. Sử dụng đường dẫn đầy đủ trong các lệnh includes và requires, tránh cho việc hệ điều hành phải xử lý lại đường dẫn. 

10. Hàm require() và include() là tương tự nhau chỉ khác chút ít xử lý lỗi khi không tìm thấy file 

11. Kể từ PHP5, trong khi thời gian của các tập lệnh bắt đầu thi hành có thể được tìm thấy trong $ _SERVER [ 'REQUEST_TIME'], thay vì sử dụng thời gian này time() hay microtime()()(). 

12. PCRE nhanh hơn EREG 

13. Khi xử lý XML trong PHP thử dùng hàm XML2array, với HTML bạn có thể sử dụng DOM hay DOM XML trong PHP4. 

14. Hàm str_replace thực hiện nhanh hơn preg_replace, str_replace về tổng thể tì tốt tuy nhiên với các chuỗi lớn thì hàm strtr sẽ nhanh hơn.Sử dụng mảng trong hàm str_replace thường nhanh hơn là bạn thực hiện nhiều câu lệnh str_replace 

15. cấu trúc “else if” thực hiện nhanh hơn case/switch. 

16. Việc ngăn chặn bắt lỗi bằng @ sẽ làm rất chậm tiến trình thực hiện 

17. Để tiết kiệm băng thông sử dụng bật mod_deflate trong Apache v2 hoặc mod_gzip trong Apache v1 

18. Đóng kết nối đến database khi đã thực hiện xong. 

19. Sử dụng $row[’id’] nhan hơn gấp 7 lần $row[id], bởi vì nếu bạn không đưa vào cặp dấu nháy đơn thì php sẽ phải đoán xem chỉ số bạn đưa vào có nghĩa là gì , giả định rằng đó không phải là một hằng số 

20. Sử dụng cặp thẻ  khi khai báo code PHP bao gồm cả các thẻ rút gọn 

21. Sử dụng strict code, để tránh các lỗi bị lấp , các notices(thông báo) và warnings(cảnh báo) như vậy thì kết quả code sẽ trong sang hơn. Nên để error_reporting(E_ALL) luôn được bật. 

22. Các script PHP được Apache xử lý thông thường chậm hơn từ 2-10 lần khi xử lý một trang tĩnh. Cố gắng sử dụng các trang tĩnh thay thế các script nếu có thể 

23. các script PHP (ngoại trừ cached) được biên dịch tại bất kỳ thời điểm bạn gọi chúng. Việc cài đặt caching cho PHP (như memcached , eAccelerator hay Turck MMCache) thường tăng hiệu quả hoạt động từ 25-100% thời gian biên dịch các lần sau. Bạn có thể cài đặt eAccelerator trong cPanel bằng cách sử dụng EasyApache3. 

24. Một kỹ thuật sử dụng caching thay thế khác khi bạn có các trang HTML được xuất bản bởi PHP mà có tần suất thay đổi thấp. hãy thử dung Smarty hay Cache Lite. 

25. Sử dụng isset để kiểm tra độ dài tối thiểu của chuỗi sẽ nhanh gấp 5 lần so với dùng hàm strlen. (ví dụ: if (strlen($foo) < 5) { echo “Foo is too short”; } ta có thể viết lại thành . if (!isset($foo{5})) { echo “Foo is too short”; } ).

26. ++$i thực hiện nhanh hơn $ i++, vì vậy ta nên chọn ++$i tại tất cả những nơi mà có thể 

27. Sử dụng các hàm được định nghĩa sẵn trong PHP , đừng cố xây dựng các hàm của bạn vì việc sử dụng hàm của php sẽ nhanh hơn rất nhiều so với hàm bạn định nghĩa. 

28. Sử dụng Xdebug để debug code. 

29. Code riêng biệt : mã code và HTML cần phải được tách riêng biệt khi viết ứng dụng-> tăng tính sử dụng lại và quản lý dễ dàng hơn 

30. Đừng băn khoăn sử dụng các hệ thống template phức tạp như Smarty, use the one that’s included in PHP already, see ob_get_contents and extract, and simply pull the data from your database. [Citation] 

31. Đừng bao giờ tin tưởng những biến được gửi từ người dùng (như $_GET và $_POST) hãy dùng hàm MySQL_real_escape_string khi sử dụng MySQL, và htmlspecialchars khi hiển thị HTML khi giao tiếp với những biến này.

32. Sử dụng ip2long() vàlong2ip() để lưu trữ địa chỉ IP như một số nguyên thay vì chuỗi string 

33. Để tăng tốc độ của chương trình, nhất thiết phải biết tốc độ thực thi chương trình, quan trọng hơn là phải biết chương trình chậm ở chỗ nào. Làm thế nào để có được thông tin này? 

Bạn có thể sử dụng cách đơn giản nhất là tính thời điểm bắt đầu chương trình bằng time(), và thời điểm kết thúc cũng bằng hàm này. Nhưng như vậy bạn chỉ có thể biết được từng file trong chương trình của bạn chạy mất bao lâu mà không thể biết được đến mức hàm hay dòng mã nguồn. 

Cách tốt hơn và cũng đơn giản hơn là sử dụng xdebug (http://www.xdebug.org). Với xdebug bạn có thể biết được đến từng hàm – mỗi hàm được gọi bao nhiêu lần, tốc độ thực thi của mỗi hàm, mỗi file cũng như của toàn bộ chương trình là bao nhiêu, và còn nhiều thông tin bổ ích khác. 

Ngoài ra, một cách đơn giản và thường được sử dụng để tăng hiệu năng xử lí của chương trình PHP mà không phải sửa mã nguồn là sử dụng extension tăng tốc cho PHP. Phần lớn các extension này hoạt động bằng cách biên dịch mã nguồn PHP và lưu vào bộ nhớ để có thể được lấy ra sử dụng ngay thay vì phải biên dịch lại mỗi khi chương trình được sử dụng. Một số extension miễn phí phổ dụng: 

- Alternative PHP Cache (http://php.net/manual/en/book.apc.php) 
- eAccelerator (http://eaccelerator.net/) 
- XCache (http://xcache.lighttpd.net/)

Mới hơn Cũ hơn