40 lời khuyên nhằm tăng tốc cho PHP


1. Nếu 1 method có thể khai báo là static, hãy khai báo nó là static, tốc độ sẽ nhanh hơn
2. Dùng echo sẽ nhanh hơn print
3. Nên dùng echo nhiều biến thay vì nối chuỗi lại với nhau.
4. Luôn set giá trị lớn nhất (max value) cho vòng lặp của bạn
5. Unset những biến thừa, không sử dụng nữa để giải tỏa bộ nhớ
6. Tránh dùng __get, __set, __autoload
7. requice_once() ko tối ưu, vì php phải kiểm tra xem file đã tồn tại hay chưa
Để hiểu rõ thêm sự khác nhau của include, require, include_once, require_once:
include vs require
Điểm khác biệt của include và require là: script php của bạn sẽ terminate và báo lỗi nếu bạn dùng require mà file đó không tồn tại.
Vd:
Include example
PHP Code
<?
include 'non-existant-file'; (file ko tồn tại)
echo
"hello";
?>

Output: hello
Require example:
PHP Code
<?
require 'non-existant-file'; (file ko tồn tại)
echo
"hello";
?>

Output: Fatal error: Failed opening required 'non-existant-file'
Include: bỏ qua lỗi và tiếp tục thực thi
Require: báo lỗi khi ko tìm thấy file à thoát.
include_once vs require_once
include_once and require_once nghĩa là file sẽ chỉ include 1 lần đầu tiên khi script thực thi đến _once statement
Khi script được thực thi, include.php chỉ được include 1 lần khi bạn đến include_once statement. Cho nên đoạn code trên cũng tương tự như thế này:
8. Nên dùng đường dẫn đầy đủ trong include và require, đỡ tốn thời gian cho php phải kiểm tra đường dẫn của hệ thống
9. Nếu bạn cần biết thời gian lúc script thực thi thì nên dùng $_SERVER[’REQUEST_TIME’] thay vì dùng time()
10. Nếu có thể thì nên dùng strncasecmp, strpbrk và stripos thay cho regex
11. str_replace thì nhanh hơn preg_replace, nhưng strtr thì lại nhanh hơn str_replace
12. If the function, such as string replacement function, accepts both arrays and single characters as arguments, and if your argument list is not too long, consider writing a few redundant replacement statements, passing one character at a time, instead of one line of code that accepts arrays as search and replace arguments
13. Sử dụng 1 mệnh đề có chọn lựa sẽ tốt hơn sử dụng nhiều if else, else if
14. Dùng @ để tắt báo lỗi sẽ khiến script của bạn chạy chậm
15. Hãy bật mod_deflate của Apache lên (nó compress output của script trước khi send đến client)
16. Đóng kết nối đến DB mỗi khi bạn không sử dụng đến hoặc đã sử dụng xong.
17. $row[‘id’] thì nhanh hơn $row[id] đến 7 lần
18. error message (waring, notice) ko tốt cho running script của bạn
19. Không nên gọi function trong vòng lặp, vd: for ($x=0; $x < count($array); $x) . Hàm count sẽ bị gọi lại cho đến lúc thoát vòng lặp.
20. Tăng dần biến local trong 1 method là cách nhanh nhất. Nó gần như là gọi 1 biến local trong 1 function.
21. Tăng dần 1 biến global thì chậm hơn 2 lần so với biến local.
22. Tăng dần 1 giá trị của object (vd: $this->prop++) sẽ chậm hơn 3 lần so với 1 biến local
23. Tăng dần 1 biến local mà bạn chưa khai báo (undefined) sẽ chậm hơn 9 đến 10 lần so với 1 biến mà bạn đã khai báo. Vd: var $i = 0.
24. Trong 1 function, khi bạn khai báo 1 biến global mà ko dùng nó, thì sẽ làm chậm đi script của bạn, vì PHP phải check coi biến đó có tồn tại hay chưa trong toàn bộ script của bạn.
25. Method invocation appears to be independent of the number of methods defined in the class because I added 10 more methods to the test class (before and after the test method) with no change in performance.
26. method khai báo trong derived classes sẽ run nhanh hơn là method khai báo trong base class (tính kế thừa)
27. 1 function được gọi với 1 parameter và 1 function rỗng sẽ run chậm như là tăng 7-8 biến $localvar ++ (đề cập phía trên)
28. Nên dùng ‘ thay vì “ cho chuỗi của bạn. sẽ nhanh hơn 1 chút. Vì php sẽ kiếm biến trong “…” chứ không kiếm trong ‘…’ , bạn cũng có thể khai báo chuỗi của bạn trong dấu “ nếu trong chuỗi đó ko có biến nào.
29. Khi echo chuỗi, dùng dấu , sẽ nhanh hơn dấu .
30. 1 php script sẽ run chậm hơn 2-10 lần so với 1 trang HTML tĩnh. Nên dùng nhiều trang html tĩnh hơn, và ít php script hơn.
31. Script php của bạn sẽ reompiled lại mỗi khi được gọi trừ khi nó được cache. Nên dùng những biện pháp caching để php khỏi phải complile lại script mỗi khi được gọi.
32. Cache càng nhiều càng tốt. hãy sử dụng memcache. Memcached làm tăng tốc độ load site của bạn bằng cách giảm thiểu truy cập vào DB, (DB được cache trên memory như 1 object, việc truy xuất dữ liệu sẽ thực hiện trên memory, chứ ko trên DB, memory thì là nhanh nhất rồi ), để biết thêm thông tin, hãy xem trang: Memcache
33. Khi làm việc với chuỗi, nếu bạn muốn kiểm tra chuỗi đó có giá trị hay ko thì nên dùng isset() thay vì strlen(), vì nó sẽ nhanh hơn.
34. Khi tăng hoặc giảm giá trị của 1 biến, dùng ++$i sẽ nhanh hơn $i++ 1 chút.
35. Không phải dùng OOP cho mọi thứ (object oriented programming), tạo object và gọi method sẽ tốn nhiều memory hơn function.
36. Không nên khai báo cấu trúc dữ liệu thành 1 class, dùng array sẽ hiệu quả hơn
37. Không nên phân ra thành quá nhiều function, nên nghĩ xem function nào bạn sẽ dùng lại.
38. Bạn luôn luôn có thể tách code của 1 method sau này, khi cần thiết.
39. Profile php code của bạn, nó sẽ giúp bạn biết được performance code của bạn như thế nào, thắt cố chai ở đâu, và đo tốc độ thự thi script (dùng xdebug )
40. mod_gzip của apache sẽ giúp bạn nén dữ liệu trước khi trả về cho user, có thể giúp cho việc truyền tải dữ liệu tăng đến 80%.

Leave a Reply

Your email address will not be published. Required fields are marked *