GIT – APC – Opcode Caching : là ứng dụng tối ưu hóa bộ nhớ đệm và mã trung gian hoàn toàn miễn phí, với chức năng hoạt động tương đương như eAccelerator và XCache. 

Góc IT xin giới thiệu tới các bạn một kỹ thuật rất phổ biến khi làm việc với PHP nhưng cũng còn nhiều người chưa biết. Đã là dân lập trình, hẳn không ai trong chúng ta chưa từng nghe qua 2 cụm từ: “Biên dịch” và “Thông dịch”. Và hầu như ai cũng biết là các chương trình dạng “biên dịch” sẽ chạy nhanh hơn so với các chương trình dạng “thông dịch”, nhưng tại sao nó lại như vậy và có cách nào để cải thiện vấn đề này không. Bài viết sau, nhằm mục đích chia sẽ tới mọi người rõ hơn vì sao “thông dịch” chậm hơn “biên dịch” và 1 giải pháp giúp cải thiện đó là APC – Alternative PHP Caching.

Hình 1: Object PHP Lifecycle. Như chúng ta thấy trong hình trên, mỗi request đến file PHP sẽ được tiến hành xử lý thông qua 4 bước trước khi trả kết quả về cho người dùng. Quá trình này là cần thiết cho việc thực thi lệnh lần đầu, nhưng thực sự không cần thiết cho những lần gọi sau đó, vì quá trình vẫn thực hiện đầy đủ 4 bước, dù file PHP không hề có sự thay đổi. Điều này chính là nguyên nhân chính dẫn tới việc “Thông dịch” chậm hơn nhiều so với “Biên dịch”.

 

Hình 2: Object PHP Lifecycle after Caching. Sau khi được lại, quá trình thực hiện chỉ còn thông qua 2 bước là quét dữ liệu từ và thực thi lệnh. Như vậy nhanh hơn rất nhiều so với trước đó. Và theo đó, trong lần thực thi đầu tiên, ngoài việc chạy 4 bước như trên, thì code sẽ được lưu thêm vào để tăng tốc cho lần sau. Cái này gọi là lỗ trước, lời sau, mà lần sau thì lời to mà ^^

APC – Alternative PHP Caching – Opcode Caching Tool
1 – Giới thiệu:
APC là một FREE PHP Extension, là một công cụ hỗ trợ opcode caching rất đơn giản và cũng không kém phần hiệu quả. Ngoài ra, APC còn có thể dùng cho việc data caching.

2 – Cài đặt
APC có phiên bản dành cho lẫn cho Linux. Tuy nhiên, vì blog của mình chủ yếu nói trên Linux, nên mình cũng chỉ tập trung cho cài đặt cho Linux.
Bạn thực hiện lần lượt các câu lệnh sau để tiến hành cài đặt APC vào LAMP Server

yum php-pear
yum install httpd-devel
yum install pcre-devel
cd /usr/src
wget http://pecl.php.net/get/APC-3.1.9.tgz
tar -xvzf APC-3.1.9.tgz
cd APC-3.1.9
phpize
./configure –enable-apc –enable-apc-mmap –with-apxs –with-php-config=/usr/bin/php-config
make
make install

3 – Cấu hình APC cho PHP

vi /etc/php.ini

Thêm các dòng sau vào cuối file

[APC]
extension = apc.so
apc.enabled = 1
apc.shm_size = 32
apc.ttl = 7200
apc.user_ttl = 7200

Sau đó restart lại Apache

/etc/init.d/httpd restart

Vậy là xong, quá trình cài đặt cho APC Opcode Caching hoàn tất.

4 – APC Admin
Copy file apc.php từ thư mục gốc vào thư mục chạy web, ví dụ như sau:

mkdir /var/www/html/apcadmin
cp apc.php /var/www/html/apcadmin/index.php
vi/var/www/html/apcadmin/index.php

Sửa dòng sau:

defaults('ADMIN_','password');

Thành

defaults('ADMIN_PASSWORD','123456'); // Có thể thay bằng password khác, nhưng phải khác giá trị ban đầu

Sau đó vào trình duyệt, nhập vào url: http://localhost/apcadmin để vào trang admin của APC

5 – APC cho PhpMyAdmin

vi /etc/httpd/conf/httpd.conf

Copy dán đoạn sau vào cuối file

<Directory /var/www/html/phpmyadmin>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
php_flag apc.cache_by_default Off
</Directory>

Sau đó restart lại Apache server

/etc/init.d/httpd restart

Như vậy là hoàn tất mọi thao tác cài đặt, cấu hình APC cho PHP để opcode caching. Thao tác caching sẽ tự động mà chúng ta không cần tác động gì thêm.

6.Lưu ý 

Nếu các bạn gặp lỗi tương tự dạng

[Wed Jun 29 01:08:56 2011] [error] [client ip] PHP Notice: require_once() [function.require-once]: apc_cache_find [16085954]\n in /path/to/file on line 75, referer: /path/to/referer/file

[Wed Jun 29 01:08:56 2011] [error] [client ip] PHP Notice: require_once() [function.require-once]: 1. h->opened_path=[/path/to/file] h->filename=[/path/to/file]\n in /path/to/file on line 84, referer: /path/to/referer/file

[Wed Jun 29 01:08:56 2011] [error] [client ip] PHP Notice: Unknown: apc_cache_find [16215361]\n in Unknown on line 0, referer: /path/to/referer/file

Thực hiện lại việc cài đặt APC cache và thao tác

Enable internal debugging in APC [no] :no

Sau đó restart lại web server và kiểm tra lại kết quả

Theo : http://tmquang6805.blogspot.com

Print Friendly

Comments

comments

Bài viết liên quan