PDA

View Full Version : 33 Thủ thuật tối ưu hóa mã nguồn PHP



thuthuatweb
18-08-2012, 20:52
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 a cò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ẻ <?php … ?> 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. Sự khác biệt giữa mã PHP tốt và mã PHP xấu?

30. 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

31. Đừ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]

32. Đừ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.

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