PHP Opcode Cache: Bài viết này sẽ hướng dẫn các bạn cách cài đặt một số PHP Opcode Cache (APC, XCache, eAccelerator) để tăng tốc cho những website WordPress sử dụng W3 Total Cache. Bài viết này sẽ hướng dẫn các bạn cách cài đặt một số PHP Opcode Cache (APC, XCache, eAccelerator) để tăng tốc cho những website WordPress sử dụng W3 Total Cache. Show
1. Trước khi cài đặt:Đăng nhập bằng tài khoản quản trị vào trong server qua ssh hoặc bằng một phương pháp khác (phụ thuộc vào nhà cung cấp server), để cài đặt những thành phần sau - PECL: yum install php-pear - PHP Development package: yum install php-devel - Cập nhật lại GCC: yum install gcc make - Cài đặt ZLIB: yum install zlib-devel - Cài đặt PCRE: yum install pcre-devel 2. Cài đặt PHP Opcode CacheLưu ý: Không nhất thiết phải cài đặt đồng thời cả APC, XCache và eAccelerator. Cài đặt thành công một PHP Opcode Cache thôi cũng là đủ rồi 2.1. Cài đặt Alternative PHP Cache (APC):Sử dụng một trong 2 phương pháp dưới đây để cài đặt PHP Opcode Cache APC: Cài đặt qua công cụ PECL: pecl install apc Hoặc qua công cụ yum: yum install php-pecl-apc 2.2. Cài đặt XCacheSử dụng một trong 2 phương pháp dưới đây để cài đặt PHP Opcode Cache XCache: Cài đặt qua công cụ yum: yum install php-xcache Hoặc qua mã nguồn (Cách này tương đối phức tạp): cd /usr/local/src && wget http://xcache.lighttpd.net/pub/Releases/3.2.0/xcache-3.2.0.tar.gz && tar -xzf xcache-3.2.0.tar.gz && cd xcache-3.2.0 phpize && ./configure --with-php-config=/usr/bin/php-config --enable-xcache --enable-xcache-optimizer --enable-xcache-coverager && make && make install cp /var/www/vhosts/domain.com/httpdocs/media/wp-content/plugins/w3-total-cache/ini/xcache.ini /etc/php.d/ (Lưu ý: thay đổi /var/www/vhosts/domain.com/httpdocs bằng đường dẫn đến thư mục root của website)/var/www/vhosts/domain.com/httpdocs bằng đường dẫn đến thư mục root của website) 2.3. Cài đặt eAcceleratorSử dụng một trong 2 phương pháp dưới đây để cài đặt PHP Opcode Cache eAccelerator: Cài đặt qua công cụ yum: yum install php-eaccelerator Hoặc qua mã nguồn (Cách này tương đối phức tạp): yum install php-devel0 (Lưu ý: thay đổi /var/www/vhosts/domain.com/httpdocs bằng đường dẫn đến thư mục root của website)/var/www/vhosts/domain.com/httpdocs bằng đường dẫn đến thư mục root của website) 2.3. Cài đặt eAcceleratorSử dụng một trong 2 phương pháp dưới đây để cài đặt PHP Opcode Cache eAccelerator: PHP là một ngôn ngữ lập trình được giải thích (với các hình thức trung gian được lưu trong bộ nhớ cache và JIT), và cốt lõi của nó là động cơ Zend. Nó thực hiện một chương trình PHP và sử dụng "opcodes" làm đơn vị thực thi của nó. Opcode là một hướng dẫn đầy đủ Php VM, có thể hoặc không có toán hạng. Các cấu trúc này chứa một đơn vị thực thi đơn giản và đơn lẻ, và có một tập hợp hữu hạn của các opcode như vậy. Hãy xem xét một đoạn trích Hello-World tương tự như dưới đây: yum install php-devel1 Mã PHP này, khi biến thành các mã hóa mà động cơ zend có thể tiêu thụ sử dụng yum install pcre-devel6 opcode, với chuỗi ( yum install pcre-devel7) làm toán hạng của nó. Sử dụng các tiện ích mở rộng móc vào động cơ Zend hoặc sử dụng các trình gỡ lỗi như yum install pcre-devel8, có thể kết xuất một danh sách các opcodes cho một đoạn/tệp PHP nhất định. Danh sách các opcodes bị bỏ lại sau đó có thể được kiểm tra để so sánh sự khác biệt về hiệu suất và thông tin nội bộ khác. Mặc dù điều này nghe có vẻ như là một hình thức gỡ lỗi khá trần tục, nhưng nó có thể giúp xử lý các phần bên trong của Zend Engine cho một đoạn mã/tệp PHP nhất định, mà không cần phải biên dịch PHP từ nguồn hoặc phải sử dụng trình gỡ lỗi đầy đủ. Liệt kê các opcodes cho một đoạn trích rất hữu ích để nhanh chóng nắm được lớp dưới của đoạn trích. Nó cũng có thể tiết lộ một số cảnh báo hiệu suất nhất định và các khu vực bị bỏ qua. yum install php-devel1 Snippet PHP ở trên tạo ra một danh sách opcode như thế này: yum install php-devel3 PHP có tối ưu hóa nội bộ mà nó kết hợp nhiều cuộc gọi yum install pcre-devel9 cho một opcode yum install pcre-devel6 duy nhất và opcode sau tối ưu hóa có thể tiết lộ điều này: yum install php-devel4 yum install php-devel5 Bán mã hóaTiện ích mở rộng OPCache của PHP, trình gỡ lỗi yum install pcre-devel8 được đóng gói và tiện ích mở rộng PECL của Vulcan Logic (VLD) cung cấp các cách dễ dàng để đổ tất cả các opcodes cho một đoạn trích hoặc tệp đã cho. Bất kể cách truy xuất mã hóa được truy xuất, tất cả chúng đều chứa tên opcode và không hoặc nhiều toán hạng mà opcode sử dụng. Kết xuất opcodes bằng tiện ích mở rộng opcacheTiện ích mở rộng OPCache của PHP có một chỉ thị INI, in các opcodes. Đầu ra khá đơn giản và hỗ trợ đầu ra opcode trước và sau khi tối ưu hóa. Tiện ích mở rộng Opcache phải được bật cho việc này để hoạt động.OPCache extension must be enabled for this to work. pecl install apc2 chấp nhận giá trị hex để định cấu hình đầu ra opcode. Thắt hoặc đặt thành pecl install apc3 để vô hiệu hóa đầu ra.
yum install php-devel6 yum install php-devel7 Với pecl install apc5, có thể xác định mã sau khi tối ưu hóa opcode. yum install php-devel8 yum install php-devel9 Kết xuất opcodes bằng cách sử dụng yum install pcre-devel8yum install pcre-devel8 là một trình gỡ lỗi có trọng lượng nhẹ nhưng PHP hỗ trợ bảo hiểm mã, gỡ lỗi bước và in mã hóa. yum install pcre-devel8 là một phần của dự án PHP và có sẵn kể từ PHP 5.4. Trên hầu hết các kho phần mềm Linux, yum install pcre-devel8 có sẵn với các tên gói như yum install php-pecl-apc3 hoặc yum install php-pecl-apc4. Đối với các hệ thống Windows, thực thi yum install php-pecl-apc5 thường được gói cùng với yum install php-pecl-apc6 có thể thực thi trong cùng một thư mục. yum install gcc make0 yum install gcc make1 Dump Opcodes bằng Vulkan Logic Dumper (VLD)Phần mở rộng PECL từ Derick Rethans là một trong những dự án đầu tiên cung cấp các tính năng kết xuất opcode và nó cũng được duy trì ngày hôm nay. Phần mở rộng phải được cài đặt đầu tiên bằng cách sử dụng các nhị phân được biên dịch sẵn hoặc bằng cách biên dịch nó từ nguồn. yum install gcc make2 yum install gcc make3 Kiểm tra các opcodes
Danh sách các opcodes, bây giờ có thể xem xét một số chi tiết nội bộ có thể không rõ ràng ngay lập tức. Các tối ưu hóa nội bộ cũng có thể tiết lộ một số trí tuệ thông thường có thể không đúng ngày hôm nay. Hiện tại, có hơn 200 opcodes trong động cơ Zend. Một danh sách, và định nghĩa của chúng có thể được nhìn thấy từ nguồn PHP. Các ví dụ sau sử dụng đầu ra opcode của opcache. Đầu ra opcode được nhóm theo đơn vị mã và giúp kiểm tra chúng dễ dàng hơn: yum install gcc make4 yum install php-devel8 yum install gcc make6 Phần yum install php-pecl-apc7 chứa mã thực thi chính, gần giống với các chức năng yum install php-pecl-apc8 khác trong C hoặc rỉ sét. Mỗi phần ( yum install php-pecl-apc7 và yum install php-xcache0 trong ví dụ này), nó hiển thị thông tin bổ sung cung cấp bối cảnh. yum install gcc make7
yum install gcc make8 Dòng này giải thích mức độ thông tin gỡ lỗi. Điều này có thể dao động từ yum install php-xcache5 đến yum install php-xcache6 đến yum install php-xcache7 đến yum install php-xcache8 và yum install php-xcache9, với một số đường chuyền khác ở giữa. Mức độ thông tin gỡ lỗi được kiểm soát với cài đặt pecl install apc2 INI yum install gcc make9 Dòng này chỉ đơn thuần hiển thị đường dẫn tệp và phạm vi của các dòng của khối mã đã cho. Trong ví dụ này, khối yum install php-pecl-apc7 nằm trong tệp cd /usr/local/src && wget http://xcache.lighttpd.net/pub/Releases/3.2.0/xcache-3.2.0.tar.gz && tar -xzf xcache-3.2.0.tar.gz && cd xcache-3.2.0 phpize && ./configure --with-php-config=/usr/bin/php-config --enable-xcache --enable-xcache-optimizer --enable-xcache-coverager && make && make install cp /var/www/vhosts/domain.com/httpdocs/media/wp-content/plugins/w3-total-cache/ini/xcache.ini /etc/php.d/2, từ các dòng cd /usr/local/src && wget http://xcache.lighttpd.net/pub/Releases/3.2.0/xcache-3.2.0.tar.gz && tar -xzf xcache-3.2.0.tar.gz && cd xcache-3.2.0 phpize && ./configure --with-php-config=/usr/bin/php-config --enable-xcache --enable-xcache-optimizer --enable-xcache-coverager && make && make install cp /var/www/vhosts/domain.com/httpdocs/media/wp-content/plugins/w3-total-cache/ini/xcache.ini /etc/php.d/3 đến cd /usr/local/src && wget http://xcache.lighttpd.net/pub/Releases/3.2.0/xcache-3.2.0.tar.gz && tar -xzf xcache-3.2.0.tar.gz && cd xcache-3.2.0 phpize && ./configure --with-php-config=/usr/bin/php-config --enable-xcache --enable-xcache-optimizer --enable-xcache-coverager && make && make install cp /var/www/vhosts/domain.com/httpdocs/media/wp-content/plugins/w3-total-cache/ini/xcache.ini /etc/php.d/4. Các dòng được đánh số từ 1. Sau thông tin meta là danh sách các opcodes cho mỗi khối mã. Trong đầu ra opcache opcode, chúng bắt đầu từ cd /usr/local/src && wget http://xcache.lighttpd.net/pub/Releases/3.2.0/xcache-3.2.0.tar.gz && tar -xzf xcache-3.2.0.tar.gz && cd xcache-3.2.0 phpize && ./configure --with-php-config=/usr/bin/php-config --enable-xcache --enable-xcache-optimizer --enable-xcache-coverager && make && make install cp /var/www/vhosts/domain.com/httpdocs/media/wp-content/plugins/w3-total-cache/ini/xcache.ini /etc/php.d/5. Tiếp theo là số là tên opcode, và sau đó bất kỳ toán hạng nào cho opcode. Giải thích việc sử dụng từng opcode không nằm trong phạm vi của bài viết này, nhưng hầu hết các opcode đều được ghi lại và thường tự giải thích. Trong ví dụ này ở khối đầu tiên: yum install zlib-devel0 Tập hợp các opcodes này khởi tạo một cuộc gọi chức năng ( cd /usr/local/src && wget http://xcache.lighttpd.net/pub/Releases/3.2.0/xcache-3.2.0.tar.gz && tar -xzf xcache-3.2.0.tar.gz && cd xcache-3.2.0 phpize && ./configure --with-php-config=/usr/bin/php-config --enable-xcache --enable-xcache-optimizer --enable-xcache-coverager && make && make install cp /var/www/vhosts/domain.com/httpdocs/media/wp-content/plugins/w3-total-cache/ini/xcache.ini /etc/php.d/6) đến toán hạng yum install php-xcache0 và gửi một giá trị chuỗi cd /usr/local/src && wget http://xcache.lighttpd.net/pub/Releases/3.2.0/xcache-3.2.0.tar.gz && tar -xzf xcache-3.2.0.tar.gz && cd xcache-3.2.0 phpize && ./configure --with-php-config=/usr/bin/php-config --enable-xcache --enable-xcache-optimizer --enable-xcache-coverager && make && make install cp /var/www/vhosts/domain.com/httpdocs/media/wp-content/plugins/w3-total-cache/ini/xcache.ini /etc/php.d/8 cho nó. Sau cuộc gọi ( cd /usr/local/src && wget http://xcache.lighttpd.net/pub/Releases/3.2.0/xcache-3.2.0.tar.gz && tar -xzf xcache-3.2.0.tar.gz && cd xcache-3.2.0 phpize && ./configure --with-php-config=/usr/bin/php-config --enable-xcache --enable-xcache-optimizer --enable-xcache-coverager && make && make install cp /var/www/vhosts/domain.com/httpdocs/media/wp-content/plugins/w3-total-cache/ini/xcache.ini /etc/php.d/9), khối mã yum install php-eaccelerator0S Một giá trị của số nguyên cd /usr/local/src && wget http://xcache.lighttpd.net/pub/Releases/3.2.0/xcache-3.2.0.tar.gz && tar -xzf xcache-3.2.0.tar.gz && cd xcache-3.2.0 phpize && ./configure --with-php-config=/usr/bin/php-config --enable-xcache --enable-xcache-optimizer --enable-xcache-coverager && make && make install cp /var/www/vhosts/domain.com/httpdocs/media/wp-content/plugins/w3-total-cache/ini/xcache.ini /etc/php.d/3. Trong khối thứ hai: yum install zlib-devel1 Nó tạo ra một biến yum install php-eaccelerator2 và gán đối số đầu tiên cho hàm đó. Thứ hai, Opcode yum install php-eaccelerator3 Concatenates yum install php-eaccelerator4 với biến yum install php-eaccelerator2. Lưu ý cách động cơ Zend biến một phép nội suy biến được trích xuất kép thành mã opcode yum install php-eaccelerator3. Giá trị kết quả được lưu trữ tại yum install php-eaccelerator7 và được sử dụng với opcode yum install pcre-devel6 sau. Cuối cùng, khối mã yum install php-eaccelerator0S yum install php-devel00 trở lại cho người gọi. Opcodes cũng có thể chứa các bước nhảy đến một số gợi ý trong cùng một khối. yum install zlib-devel2 Mã trong vòng yum install php-devel01 và vòng loại ( yum install php-devel02) có nghĩa là việc thực thi sẽ "nhảy" từ con trỏ này sang con trỏ khác, có thể nhìn thấy từ các opcodes: yum install zlib-devel3 Opcode yum install php-devel03 có nghĩa là việc thực thi sẽ được nhảy đến vị trí yum install php-devel04, đó là vòng loại ( yum install php-devel02). Giá trị của vòng loại sau đó được lưu trữ trong yum install php-eaccelerator7 và việc thực hiện tiếp tục đến yum install php-devel07. Ở vị trí yum install php-devel07, nó chứa opcode yum install php-devel09, có nghĩa là nhảy đến vị trí yum install php-devel10 nếu giá trị trong yum install php-eaccelerator7 không bằng không. Kiểm tra các opcodes trước và sau khi tối ưu hóa có thể tiết lộ một số cải tiến để tận dụng chúng. Ví dụ, PHP loại bỏ một số khối mã yum install php-devel12 nhất định nếu nó có thể xác định ưu tiên các điều kiện sẽ không bao giờ được thực thi. yum install zlib-devel4 Điều kiện yum install php-devel12 ( yum install php-devel14) sẽ không bao giờ đúng, vì vậy PHP có thể tối ưu hóa đoạn này để loại bỏ hoàn toàn khối này. Trước khi tối ưu hóa:: yum install php-devel6 yum install zlib-devel6 Sau khi tối ưu hóa yum install php-devel8 yum install zlib-devel8 PHP cũng có thể tìm ra các mẫu tối ưu hóa hơn và loại bỏ các opcode: yum install zlib-devel9 Hằng số yum install php-devel15 đề cập đến ID phiên bản PHP và nó không thay đổi đối với một thiết lập PHP nhất định. Trình tối ưu hóa OPCode PHP có thể loại bỏ khối này nếu phiên bản PHP hiện tại không đáp ứng điều kiện trong khối yum install php-devel12 này và kết quả trong danh sách opcode như thế này: yum install zlib-devel8 Tuy nhiên, nếu khối mã này nằm trong không gian tên, trình tối ưu hóa không thể áp dụng tối ưu hóa này vì mã có thể khai báo hằng số yum install php-devel15 trong không gian tên đó. yum install pcre-devel1 yum install pcre-devel2 Lưu ý các vị trí cd /usr/local/src && wget http://xcache.lighttpd.net/pub/Releases/3.2.0/xcache-3.2.0.tar.gz && tar -xzf xcache-3.2.0.tar.gz && cd xcache-3.2.0 phpize && ./configure --with-php-config=/usr/bin/php-config --enable-xcache --enable-xcache-optimizer --enable-xcache-coverager && make && make install cp /var/www/vhosts/domain.com/httpdocs/media/wp-content/plugins/w3-total-cache/ini/xcache.ini /etc/php.d/5 và yum install php-devel19 cố gắng giải quyết hằng số yum install php-devel15 và hàm yum install php-devel21 trong không gian tên hiện tại yum install php-devel22. Điều này không tối ưu vì trình tối ưu hóa không thể tối ưu hóa điều này một cách an toàn hơn nữa. yum install pcre-devel3 Với tiền tố yum install php-devel23, trình tối ưu hóa biết không thử và giải quyết các tên hàm và hàm trong không gian tên hiện tại và do đó cho phép sử dụng mã hóa tốt hơn: yum install pcre-devel4 Ở dạng tối ưu hóa: yum install zlib-devel8 PHP cung cấp nhiều cách khác nhau để truy xuất mã hóa nội bộ của nó cho một đoạn/tệp nhất định. Phần mở rộng opcode đi kèm, yum install pcre-devel8 và mở rộng VLD có thể kết xuất các opcode với nhiều cấp độ tối ưu hóa, điểm nhập và điểm nhảy. OPCodes giúp kiểm tra các cấu trúc cấp thấp hơn của mã PHP nhất định và có thể giúp áp dụng các tinh chỉnh để hỗ trợ tối ưu hóa. |