eAccelerator是一個開源PHP加速器,用于優(yōu)化程序,編碼器和動態(tài)內容緩存。它通過在編譯狀態(tài)下對PHP腳本進行緩存以提高他們的性能,所以那些系統(tǒng)開銷在編譯時幾乎可以被消除。它還能夠對腳本進行優(yōu)化以便加速它們的執(zhí)行速度。利用eAccelerator可以減少服務器的負載并提高PHP代碼的執(zhí)行效率。
一、前期準備
1、下載php原代碼和二進制包
地址:http://windows.php.net/download/
2、下載eaccelerator(選擇zip包)
地址:http://eaccelerator.net/
3、php配置文件config.w32.h
地址:http://xiazai.jb51.net/201501/other/php_w32_config.rar
Ps:
1、 下載二進制包及配置文件,主要是為了省去編譯php的過程
2、 Php在win下分vc9、vc6等版本,下載前要選好,編譯后的擴展只能用于對應版本的php
3、 如果選vc6,vc11,則要修改config.w32.h中對應的vc信息
二、解壓過程(本例選vc9)
1、 直接解壓php-5.3.26-src.zip,eaccelerator.zip到d:/
2、 復制config.w32.h到d:/php-5.3.26-src/main目錄
3、 解壓php-5.3.26-Win32-VC9-x86.zip需要解壓到d:/php目錄
4、 把d:/php/dev/php5ts.lib復制到eaccelerator文件夾
5、 把eaccelerator文件夾剪切到d:/php-5.3.26-src/ext
三、編譯過程(錯誤可能與eaccelerator版本有關)
1、 打開eaccelerator項目../win32/eAccelerator.sln,設置為Win32 Release。
2、 配置項目屬性:鏈接庫-常規(guī),附加庫目錄補充“./..”;
3、 開始編譯項目,可能發(fā)生以下錯誤:
復制代碼 代碼如下:
../../../main/streams/php_stream_transport.h(85): error C2143: syntax error : missing ')' before '*'
../../../main/streams/php_stream_transport.h(85): error C2081: 'socklen_t' : name in formal parameter list illegal
解決:這是由于找不到宏報的錯誤。打開這個文件,添加typedef int socklen_t;
4、繼續(xù)編譯,可能發(fā)生以下錯誤:
復制代碼 代碼如下:
/ext/eaccelerator/ea_store.c(205): error C2143: syntax error : missing ';' before 'type'
/ext/eaccelerator/ea_store.c(207): error C2065: 'opline' : undeclared identifier
解決:這是由于項目該處沒用規(guī)范的C寫法,把“zend_op *opline, *end;”移到“ADDSIZE(size, from->last * sizeof(zend_op));”上面,也就是if 結構中的首部。
5、 繼續(xù)編譯,應該沒有其他錯誤了,完成后在Release目錄找到eAccelerator_ts.dll
四、結束語
1、 寫這篇文章,不僅說明如何在windows下編譯eAccelerator,同時也說明了在windows下可以直接編寫php擴展,無須借助cygwin等等
2、 Php版本控制不是很理想,估計也很難避免的。4.0和5.0或者5.3都存在很大差別,而且同一版本中還有編譯器的差別,線程安全的差別,所以開發(fā)當中也要注意這個問題。
新聞熱點
疑難解答
圖片精選