Hướng dẫn cách làm - Hình ảnh minh họa - Phim hướng dẫn Cách tối ưu code php căn bản

Hôm nay, 23/09/2017 - 12:35

Múi giờ UTC + 7 Giờ



Nội quy chuyên mục


Thành viên đăng quảng cáo trong chuyên mục này sẽ bị xóa toàn bộ bài viết và cấm vĩnh viễn tham gia Diễn đàn.

* Xem qui định đăng bài viết tại đây: viewtopic.php?f=2&t=318247



Tạo chủ đề mới Gửi bài trả lời
 Tiêu đề bài viết: Cách tối ưu code php căn bản
Gửi bàiĐã gửi: 20/06/2016 - 18:39 
thamkk0212

Ngoại tuyến

Thành viên

Thành viên

Ngày tham gia: 18/11/2015 - 18:21
Bài viết: 16
Đã cảm ơn: 0 lần
Được cảm ơn: 0 lần
Thực hiện tối ưu hóa code php nâng cao , đào tạo hoàn cảnh tối ưu hóa code php nếu với có nhiều người sử dụng cùng lúc , mã nguồn được viết có lí , có xác xuất cải thiện các tiêu chuẩn của bạn được tăng một cách đáng kể.
Những năm nay , Vui lòng đăng ký thành viên và đăng nhập để xem nội dung này. đã trở nên một trong những tiếng nói phổ dụng nhất trong lập trình web php. Phần ưu tú của PHP là mã nguồn mở , miễn phí và không request cấu hình có máy chủ cao. Tuy nhiên , PHP có một số điểm yếu , một trong số đó là tốc độ. Dù có vậy , nếu mã nguồn được viết có lí , sử dụng PHP bạn không có một sự hạn chế hay một trường hợp ngoại lệ nào cả có xác xuất tạo được ứng dụng chạy với tốc độ vượt trội.
Các lừa dối tăng tốc
Để có xác xuất giảng giải rỏ rành , 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 tiêu chuẩn chậm đi , khi đó Vui lòng đăng ký thành viên và đăng nhập để xem nội dung này. sẽ phải kiểm tra xem file đã được nạp trước đó chưa. Hẳn nhiên , trong nhiều trường hợp , điều này là không tránh khỏi. Nhưng nếu hão huyền 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 để ý thiết. Vòng lặp trên có xác xuất đượ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ó xác xuất 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 độc nhất vô nhị , 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 giản đơn nguyên do là vì print làm nhiều việc hơn echo. Một là print thêm vào cuối chuỗi thông số một dấu xuống dòng ( \n ) , hai là nó cũng trả về kết quả ( luôn là 1 ). Khi dùng echo , bạn còn có xác xuất đưa cả 2 chuỗi vào làm thông số , như vậy Vui lòng đăng ký thành viên và đăng nhập để xem nội dung này. 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 một.
Đoạn mã trên còn sử dụng dấu nháy kép bao quanh
. Ví như 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 ( nếu như \n , \r , \t ) và do vậy thản nhiên sẽ nhanh hơn.
Dòng mã in dữ liệu ra màn hình do vậy có xác xuất viết thành:
...
echo $my_array[$i] , '
';
...
ngoại giả , đ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ễ dàng để xử lý hoặc sử dụng hoặc quản lý hơn với nhiều người. Thay vào đó nên sử dụng preg_match , lí do nguyên do là vì preg_match có hiệu quả y sì kèm theo phần ưu tú vượt trội về tốc độ. Kể từ PHP 5.3.0 , ereg không còn được xứng đáng được đề nghị hoặc đề xuất sử dụng , dùng ereg sẽ gây ra khuyến cáo E_DEPRECATED. Dòng trên có xác xuất viết lại thành:
...
if ( preg_match( '!^[0-9]+$!' , $my_array[$i] ) && ( strlen( $my_array[$i] ) > 1 ) )
...
Thay vì sử dụng strlen như ở trên , bạn cũng có xác xuất sử dụng isset( $my_array[$i]1 ). isset là một kiến trúc tiếng nói , không phải là hàm như strlen do vậy sử dụng isset sẽ nhanh hơn strlen. Hẳn nhiên bạn không có một sự hạn chế hay một trường hợp ngoại lệ nào cả có xác xuất thêm kiểm tra độ dài vào ngay trong preg_match – tuy nhiên , đây chỉ là một nếu để giúp bạn đọc hiểu được vấn đề.
if ( preg_match( '!^[0-9]+$!' , $my_array[$i] ) && isset( $my_array[$i]1 ) )
...
Đoạn mã trên cũng sử dụng str_replace để thay thế tuốt 0 thành 1 trong chuỗi. Ví như mục đích chỉ giản đơn có vậy , bạn nên sử dụng strtr thay vì str_replace vì strtr có xác xuất thực thi nhanh hơn 4 lần. Na ná , str_replace cũng nhanh hơn preg_replace và preg_replace cũng nhanh hơn ereg_replace rất nhiều. Trần vào hoàn cảnh , đôi lúc bạn chẳng thể thuần tuý sử dụng strtr mà phải sử dụng str_replace hay thậm chí preg_replace , nhưng dù trong trường hợp nào bạn cũng không nên sử dụng ereg_replace vì mọi việc đều có xác xuất làm được với preg_replace.


Đầu trang
 Xem thông tin cá nhân  
 
Hiển thị những bài viết cách đây:  Sắp xếp theo  
Tạo chủ đề mới Gửi bài trả lời
 Bạn đang xem trang 1 / 1 trang [ 1 bài viết ] 

Các chủ đề liên quan


Múi giờ UTC + 7 Giờ


Bạn không thể tạo chủ đề mới trong chuyên mục này.
Bạn không thể trả lời bài viết trong chuyên mục này.
Bạn không thể sửa những bài viết của mình trong chuyên mục này.
Bạn không thể xoá những bài viết của mình trong chuyên mục này.
Bạn không thể gửi tập tin đính kèm trong chuyên mục này.

Chuyển đến: