天天看點

PHP服務緩存加速優化實戰

PHP服務緩存加速優化實戰

(1) 操作碼介紹及緩存原理:

當用戶端請求一個PHP程式的時候,伺服器的 PHP 引擎會解析該 PHP 程式,并将其編譯為特定的操作碼(Operate Code)檔案。

該檔案是執行PHP代碼後的一種二進制表示形式。

預設情況下,這個編譯好的操作碼檔案由 PHP 引擎執行後進行丢棄。

操作碼檔案緩存機制就是将編譯還的檔案儲存下來,并放到共享記憶體中,以便于下一次調用該PHP頁面的時候重用它,避免了相同的代碼重複度,節省了 PHP 引擎重複編譯的時間。

降低了伺服器負載,同時減少了伺服器的 CPU 和記憶體的開銷。

LAMP 環境 PHP 緩存加速器的原理:

在 LNMP 中,Apache 服務是使用 libphp5.so 響應處理 PHP 程式請求的。

1. Apache 服務接受客戶的 PHP 程式請求,并根據規則進行過濾。

2. Apache 将 PHP 程式請求傳遞給 PHP 處理子產品 libphp5.so。

3. PHP引擎定位磁盤上的 PHP 檔案,并将其加載到記憶體中解析。

4. PHP 處理子產品 libphp5.so 将 PHP 源碼編譯成 opcode。

5. Apache 接收用戶端新的 PHP 請求,PHP 編譯解析并将結果傳回。

LNMP 環境 PHP 緩存加速器的原理:

在 LNMP 中不再使用 libphp5.so 子產品了,而是啟動獨立的 FCGI 程序,就是 php-fpm,由它來監聽來自 Nginx 的 PHP 程式請求,交給 PHP 引擎進行處理。

1. Nginx 接收用戶端的 PHP 程式通路請求。

2. Nginx 根據擴充名等過濾規則進行将 PHP 程式傳遞給解析 PHP 程式的 FCGI 程序。

3. PHP FPM 程序調用 PHP 解析器讀取磁盤上的 PHP 檔案,并加載到記憶體中。

4. PHP 解析器将 PHP 程式編譯成為 opcode 檔案,然後把 opcode 緩存起來。

5. PHP FPM 引擎執行 opcode 樹後,傳回資料給 Nginx,進而傳回用戶端。

6. Nginx 接收新的用戶端請求,PHP FPM 引擎就會直接讀取緩存起來的 opcode 并執行。

7. 将結果傳回。

PHP 加速軟體的選擇:

PHP 緩存加速器軟體常見的有 XCache、eAccelerator、APC(Alternative PHP Cache)、ZendOpcache 等。

首選 Xcache,其次是 eAccelerator。

原因:

1. 經過測試,XCache 效率更高,速度更快。

2. XCache 軟體開發社群更加活躍。

3. 支援更高的 PHP 版本

4. eAccelerator 安裝及配置相對簡單,加速效果明顯。

5. eAccelerator 文檔資料比較多,但是官方對軟體的更新速度比較慢,社群不活躍。

6. eAccelerator 僅僅适合 PHP 5.4 以下的版本。

7. ZendOpcache 是 PHP 官方研發的新一代緩存加速軟體,以後可能會有更好的發展前景。

8. 從 PHP5.5 開始 ZendOpcache 開始整合到 PHP 軟體中,以前都是以插件的方式進行安裝的。

9. 在 PHP5.5 以後的版本中使用--enable-opcache。

10. ZendOpcache 可能是未來緩存的首先選擇。

在使用緩存的時候需要準備 LNMP 環境。

(1) 安裝 XCache 緩存加速子產品:

1

2

3

4

5

6

7

8

9

<code>cd ./xcache-3.2.0</code>

<code>/app/php/bin/phpize</code>

<code>./configure --enable-xcache --with-php-config=/app/php/bin/php-config</code>

<code>make</code>

<code>make test</code>

<code>make install</code>

<code>ll /app/php-5.4.24/lib/php/extensions/no-debug-non-zts-20100525/</code>

<code>total 680</code>

<code>-rwxr-xr-x. 1 root root 695580 Sep 17 14:06 xcache.so</code>

(2) 安裝 eAccellerator 緩存加速子產品:

<code>tar -zxvf ./eaccelerator-eaccelerator-42067ac.tar.gz</code>

<code>cd ./eaccelerator-eaccelerator-42067ac</code>

<code>./configure --enable-eaccelerator=shared --with-php-config=/app/php/bin/php-config</code>

<code>make &amp;&amp; make install</code>

<code>total 1108</code>

<code>-rwxr-xr-x. 1 root root 438090 Sep 17 14:14 eaccelerator.so</code>

(3) 安裝 ZendOpcache 緩存加速子產品:

<code>tar -zxvf ./zendopcache-7.0.5.tgz </code>

<code>cd ./zendopcache-7.0.5</code>

<code>./configure --enable-opcache --with-php-config=/app/php/bin/php-config</code>

<code>total 1636</code>

<code>-rwxr-xr-x. 1 root root 539488 Sep 17 14:18 opcache.so</code>

(4) 安裝 PHP Memcached 擴充插件:

Memcached是一個開源的支援高性能、高并發及分布式的記憶體緩存服務軟體。

分為用戶端和伺服器端:

用戶端:Memcache

伺服器端:Memcached

在傳統場景下,多數 Web 應用都将資料儲存到 RDBMS 中,www 伺服器從中讀取資料并在浏覽器中顯示。

但是随着資料量的變大,通路的集中,就會出現 RDBMS 的負擔加重,資料庫響應速度變慢,網站延遲等問題。

Memcached 是高性能的分布式記憶體緩存服務。

使用 Memcached 的主要目的就是通過自身記憶體中緩存資料庫的查詢結果,減少資料庫通路次數,以提高動态 Web 應用速度,提高網站架構的并發能力和擴充性。

Memcached 服務通過在事先規劃好的系統空間中面臨緩存資料庫中各類資料,以達到減少前端業務對資料庫的直接高并發通路,進而提升大規模網站叢集中動态服務的并發通路能力。

生産場景中,Memcached 服務一般被用來儲存網站中經常被讀取的對象或資料。

Memcached的工作流程:

1. 程式首先檢查用戶端請求的資料在 Memcached 服務的緩存中是否存在,如果存在,會直接将請求的資料傳回,不再請求後端的資料庫。

2. 如果請求的資料在 Memcached 的緩存中不存在,程式會去 Memcached 後端的資料庫服務。

3. 把資料從資料庫中傳回到用戶端中。

4. 同時把新的資料儲存在 Memcached 服務緩存中,下次直接請求 Memcached 中的資料。

為 PHP 安裝 Memcache 用戶端:

<code>tar -zxvf ./memcache-2.2.5.tgz</code>

<code>cd ./memcache-2.2.5</code>

<code>./configure --enable-memcache --with-php-config=/app/php/bin/php-config</code>

<code>-rwxr-xr-x. 1 root root 259088 Sep 17 16:00 memcache.so</code>

安裝報錯解決:

<code>make:***[memcache.lo]Error 1</code>

解決:

<code>cp memcache.loT memcache.lo</code>

(5) 安裝 PDO_MYSQL 擴充子產品:

PDO 擴充為 PHP 通路資料庫定義了一個輕量級的一緻性接口,它提供一個資料通路抽象層。

這樣五龍輪使用什麼資料庫都可以使用統一的函數進行資料查詢并擷取資料。

PDO_MYSQL 可以使用插件安裝或編譯PHP的時候加入參數,使用--with-pdo-mysql=mysqlnd 直接加入 PDO_MYSQL 的 PHP 支援。

使用--with-mysql-mysqlnd 即可在沒有 MySQL 的環境下使 PHP 支援 MySQL 資料庫。

<code>tar -zxvf ./PDO_MYSQL-1.0.2.tgz</code>

<code>cd ./PDO_MYSQL-1.0.2</code>

<code>/app/php/bin/phpize </code>

<code>./configure --with-php-config=/app/php/bin/php-config --with-pdo-mysql=/app/mysql</code>

<code>make: *** [pdo_mysql.lo] Error 1</code>

<code>cp pdo_mysql.loT pdo_mysql.lo</code>

<code>make: *** [mysql_driver.lo] Error 1</code>

<code>cp mysql_driver.loT mysql_driver.lo</code>

make: *** [mysql_statement.lo] Error 1

<code>cp mysql_statement.loT mysql_statement.lo</code>

<code>-rwxr-xr-x. 1 root root   5429 Sep 17 16:35 pdo_mysql.so</code>

(6) 安裝 imagick 子產品:

ImageMagick 是一套功能強大,穩定而且免費的工具集和開發包,可以用來讀寫和處理超過 8 9 種。

利用根據 Web 應用程式的需要動态生成圖檔,還可以對一個或一組圖檔進行改變大小等操作。

同時 ImageMagick 提供一個高品質的 2D 工具包。

部分支援 SVG。

它甚至包括各種曲線的渲染功能。

<code>tar -zxvf ./ImageMagick-i686-pc-mingw32.tar.gz</code>

<code>cd ./ImageMagick-6.8.5/</code>

<code>./configure &amp;&amp; make &amp;&amp; make install</code>

(7) 安裝 imagick PHP 擴充子產品:

要先安裝 ImageMagick 子產品才可以安裝 imagick PHP模 塊。

imagick 插件是提供 PHP 調用 ImageMagick 功能的擴充子產品。

安裝 ImageMagick 圖像程式後,再安裝 PHP 的擴充 imagick 插件,才可以用 ImageMagick 提供的API進行圖檔建立、壓縮與修改。

<code>ln -s /usr/local/include/ImageMagick-7/ /usr/local/include/ImageMagick</code>

<code>tar -zxvf ./imagick-2.3.0.tgz</code>

<code>cd ./imagick-2.3.0</code>

<code>./configure --with-php-config=/app/php/bin/php-config</code>

配置 PHP Memcache/PDO_MYSQL/imagick 子產品:

編輯 php.ini 檔案:

<code>extension=/app/php-5.4.24/lib/php/extensions/no-debug-non-zts-20100525/</code>

檢查配置檔案:

<code>grep "extension_dir=" /app/php/lib/php.ini</code>

<code>extention = pdo_mysql.so</code>

<code>extettion = memcache.so</code>

<code>extention = imagick.so</code>

(8) 配置 eAccelerator 插件生效并優化參數:

<code>mkdir /tmp/eaccelerator</code>

<code>chown nginx.nginx /tmp/eaccelerator/</code>

<code>ll -d /tmp/eaccelerator/</code>

<code>drwxr-xr-x. 2 nginx nginx 4.0K Sep 17 20:26 /tmp/eaccelerator/</code>

這個目錄可以使用 tmpfs 或 SSD 來存儲。

配置PHP參數:php.ini

10

11

12

13

14

15

<code>[eaccelerator]</code>

<code>extension = eaccelerator.so</code>

<code>eaccelerator.shm_size="64"</code>

<code>eaccelerator.cache_dir="/tmp/eaccelerator"</code>

<code>eaccelerator.enable="1"</code>

<code>eaccelerator.optimizer="1"</code>

<code>eaccelerator.check_mtime="1"</code>

<code>eaccelerator.debug="0"</code>

<code>eaccelerator.filter=""</code>

<code>eaccelerator.shm_max="0"</code>

<code>eaccelerator.shm_tt1="3360"</code>

<code>eaccelerator.shm_prune_period="3360"</code>

<code>eaccelerator.hsm_only="0"</code>

<code>eaccelerator.compress="1"</code>

<code>eaccelerator.compress_level="9"</code>

檢查 PHP 配置檔案:

16

17

18

19

20

<code>[root@comp0 ~]# tail -15 /app/php/lib/php.ini </code>

<code>[eaccelerator]     #加載子產品檔案配置</code>

<code>extension = eaccelerator.so      #加載子產品</code>

<code>eaccelerator.shm_size="64"      #存儲緩存資料的共享記憶體大小,如果是0,則最大值看核心/proc/sys/kernel/shmmax</code>

<code>eaccelerator.cache_dir="/tmp/eaccelerator"    #磁盤緩存存儲路徑,緩存内容precompiled code、session data、contect、user entires。預設路徑是/tmp/eaccelerator</code>

<code>eaccelerator.enable="1"   #eAccelerator緩存生效開關,預設為1,表示開啟。</code>

<code>eaccelerator.optimizer="1"    #加速PHP代碼執行速度,預設為1,表示激活。用于緩存前的代碼加速。</code>

<code>eaccelerator.check_mtime="1"  #檢查緩存修改時間,決定代碼是否需要重新編譯,預設值為1,表示激活。</code>

<code>eaccelerator.debug="0"    #緩存加速調試,打開後可以看到緩存中的資訊。</code>

<code>eaccelerator.filter=""    #設定對象是否緩存規則,空表示不設定。</code>

<code>eaccelerator.shm_max="0"    #可以被放置的緩存最大值,不限制為0.</code>

<code>eaccelerator.shm_tt1="3360"   #緩存檔案的生存期</code>

<code>eaccelerator.shm_prune_period="3360"  #當共享記憶體時間不夠的時候,從共享記憶體中移除舊的資料的時間周期。</code>

<code>eaccelerator.hsm_only="0"    #是否允許緩存資料到磁盤,允許為0,但是對于session data and contect caching無影響。</code>

<code>eaccelerator.compress="1"  #是否開啟壓縮,開啟為1。</code>

<code>eaccelerator.compress_level="9"    #壓縮級别,最高為9。</code>

<code>#可選值</code>

<code>eaccelerator.keys="shm_and_disk"    #控制keys的緩存位置</code>

<code>eaccelerator.sessions="shm_and_disk"   #控制sessions的緩存位置</code>

<code>eaccelerator.content="shm_and_disk"   #控制内容緩存位置</code>

檢視 eAccelerator 的加速情況:

<code>/app/php/sbin/php-fpm -v</code>

<code>PHP 5.4.24 (fpm-fcgi) (built: Sep 17 2017 12:21:41)</code>

<code>Copyright (c) 1997-2013 The PHP Group</code>

<code>Zend Engine v2.4.0, Copyright (c) 1998-2013 Zend Technologies</code>

<code>    </code><code>with eAccelerator v1.0-dev, Copyright (c) 2004-2012 eAccelerator, by eAccelerator</code>

測試/tmp/eaccelerator/目錄下存在緩存資料。

配置XCache插件加速:

編輯php.ini:

21

22

23

24

25

26

27

28

29

30

31

32

33

34

<code>;[xcache]</code>

<code>[xcache-common]</code>

<code>extension = xcache.so</code>

<code>[xcache.admin]</code>

<code>xcache.admin.enable_auth = On</code>

<code>xcache.admin.user = </code><code>"mOo"</code>

<code>xcache.admin.pass = </code><code>"md5 encrypted password"</code>

<code>[xcache]</code>

<code>xcache.shm_scheme = </code><code>"mmap"</code>

<code>xcache.size = 256M</code>

<code>xcache.</code><code>count</code> <code>= 2</code>

<code>xcache.slots = 8K</code>

<code>xcache.ttl = 86400</code>

<code>xcache.gc_interval = 3600</code>

<code>xcache.var_size = 64M</code>

<code>xcache.var_count = 1</code>

<code>xcache.var_slots = 8K</code>

<code>xcache.var_ttl = 0</code>

<code>xcache.var_gc_interval = 300</code>

<code>xcache.var_namespace_mode = 0</code>

<code>xcache.var_namespace = </code><code>""</code>

<code>xcache.readonly_protection = Off</code>

<code>xcache.mmap_path = </code><code>"/dev/zero"</code>

<code>xcache.coredump_directory = </code><code>""</code>

<code>xcache.coredump_type = 0</code>

<code>xcache.disable_on_crash = Off</code>

<code>xcache.experimental = Off</code>

<code>xcache.cacher = On</code>

<code>xcache.stat = On</code>

<code>xcache.optimizer = Off</code>

<code>[xcache.converager]</code>

<code>xcache.coverager = Off</code>

<code>xcache.coverager_autostart = On</code>

<code>xcache.coveragedump_directory = </code><code>""</code>

檢查 PHP 的 XCache 加速緩存情況:

<code>/app/php/bin/php -v</code>

<code>PHP 5.4.24 (cli) (built: Sep 17 2017 12:21:30) </code>

<code>    </code><code>with XCache v3.2.0, Copyright (c) 2005-2014, by mOo</code>

<code>    </code><code>with XCache Cacher v3.2.0, Copyright (c) 2005-2014, by mOo</code>

配置檔案詳解:

35

<code>;[xcache]   XCache配置檔案解析開始</code>

<code>extension = xcache.so    包含加速子產品,路徑相對于extension_dir的配置,自3.0開始不再支援使用zend_extension加載xcache的方式。</code>

<code>[xcache.admin]     管理者配置開始</code>

<code>xcache.admin.enable_auth = On     激活管理者認證</code>

<code>xcache.admin.user = </code><code>"mOo"</code>    <code>指定xcache的管理者使用者名</code>

<code>xcache.admin.pass = </code><code>"md5 encrypted password"</code>  <code>指定xcache的管理者密碼</code>

<code>[xcache]   XCache配置開始</code>

<code>xcache.shm_scheme = </code><code>"mmap"</code>   <code>設定XCache如何從系統配置設定共享記憶體</code>

<code>xcache.size = 256M    禁止緩存為0,啟用緩存為非零數字,需要注意系統所允許的mmap最大值</code>

<code>xcache.</code><code>count</code> <code>= 2    指定将XCache切分多少塊,官方推薦設定為伺服器CPU的數量</code>

<code>xcache.slots = 8K  hash槽個數的參考值,緩沖超過此數值時,也沒有任何問題。</code>

<code>xcache.ttl = 86400    設定cache對象的生存周期TTL,永不過期是0</code>

<code>xcache.gc_interval = 3600   回收器掃描過期回收記憶體空間的間隔,不掃描為0,其他數值的機關是秒,預設是0</code>

<code>xcache.var_size = 64M  用于變量緩存,而不是opcache緩存</code>

<code>xcache.var_count = 1  用于變量緩存,而不是opcache緩存</code>

<code>xcache.var_slots = 8K  用于變量緩存,而不是opcache緩存</code>

<code>xcache.var_ttl = 0   用于變量緩存,而不是opcache緩存</code>

<code>xcache.var_gc_interval = 300  用于變量緩存,而不是opcache緩存</code>

<code>xcache.var_namespace_mode = 0  如果啟用了還參數,将會稍微降低性能,但是會提高一定的系統安全性。對xcache.mmap_path = </code><code>"/dev/zero"</code><code>無效</code>

<code>xcache.mmap_path = </code><code>"/dev/zero"</code>  <code>對于*nix,xcache.mmap_path 是一個檔案路徑而非目錄。如果要啟用該參數,請使用/tmp/xcache這樣的參數。</code>

<code>如果開啟了xcache.readonly_protection參數,不同程序組的PHP将不會共享一個/tmp/xcache路徑。</code>

<code>xcache.coredump_directory = </code><code>""</code>  <code>當XCache崩潰後,是否把資料儲存到指定路徑</code>

<code>xcache.coredump_type = 0   </code>

<code>xcache.disable_on_crash = Off   當XCache發生崩潰後,自動關閉XCache的路徑</code>

檢視CPU參數:

<code>more /proc/cpuinfo </code>

<code>processor: 0</code>

<code>vendor_id: GenuineIntel</code>

<code>cpu family: 6</code>

<code>model: 69</code>

<code>model name: Intel(R) Core(TM) i3-4030U CPU @ 1.90GHz</code>

<code>stepping: 1</code>

<code>microcode: 29</code>

<code>cpu MHz: 1900.000</code>

<code>cache size: 3072 KB</code>

<code>physical id: 0</code>

<code>siblings: 1</code>

<code>core id: 0</code>

<code>cpu cores: 1</code>

<code>apicid: 0</code>

<code>initial apicid: 0</code>

<code>fpu: yes</code>

<code>fpu_exception: yes</code>

<code>cpuid level: 13</code>

<code>wp: yes</code>

<code>flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc up</code>

<code> </code><code>arch_perfmon pebs bts xtopology tsc_reliable nonstop_tsc aperfmperf unfair_spinlock pni pclmulqdq vmx ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadli</code>

<code>ne_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm arat epb xsaveopt pln pts dtherm tpr_shadow vnmi ept vpid fsgsbase bmi1 avx2 smep bmi2 invpcid</code>

<code>bogomips: 3800.00</code>

<code>clflush size: 64</code>

<code>cache_alignment: 64</code>

<code>address sizes: 42 bits physical, 48 bits virtual</code>

<code>power management:</code>

配置web管理界面:

<code>mkdir</code> <code>/app/nginx/html/blog/xcache</code>

<code>cp -a /tools/xcache-3.2.0/htdocs/ /app/nginx/html/xcache/</code>

<code>chown</code> <code>-R nginx.nginx /app/nginx/html/xcache/</code>

建立XCache web配置檔案

<code>vim /app/nginx/conf/extras/xcache.conf</code>

<code>server {</code>

<code>        </code><code>listen       8088;</code>

<code>        </code><code>server_name  inner.myxcache.com;</code>

<code>        </code><code>#location / { </code>

<code>        </code><code>#    root   html;</code>

<code>        </code><code>#    index  index.html index.htm;</code>

<code>        </code><code>#}  </code>

<code>        </code><code>location / { </code>

<code>            </code><code>root html/xcache;</code>

<code>            </code><code>fastcgi_pass 127.0.0.1:9000;</code>

<code>            </code><code>fastcgi_index index.php;</code>

<code>            </code><code>include</code> <code>../conf/fastcgi.conf;</code>

<code>        </code><code>}   </code>

<code>        </code><code>error_page   500 502 503 504  /50x.html;</code>

<code>        </code><code>location = /50x.html {</code>

<code>            </code><code>root   html;</code>

<code>}</code>

通過md5sum生成管理者密碼:

<code>echo</code> <code>"123456"</code> <code>| md5sum </code>

<code>e10adc3949ba59abbe56e057f20f883e  -</code>

修改php.ini檔案:

<code>xcache.admin.user = </code><code>"xcacheadmin"</code>

<code>xcache.admin.pass = </code><code>"e10adc3949ba59abbe56e057f20f883e"</code>

重新開機 php-fpm。

重新開機 Nginx。

配置Z endOpcache 插件加速:

<code>vim /app/php/lib/php.ini</code>

<code>[opcache]</code>

<code>zend_extension=/app/php-5.4.24/lib/php/extensions/no-debug-non-zts-20100525/opcache.so</code>

<code>opcache.memory_consumption=32</code>

<code>opcache.interned_strings_buffer=8</code>

<code>opcache.max_accelerated_files=1000</code>

<code>opcache.revalidate_freq=60</code>

<code>opcache.fast_shutdown=1</code>

<code>opcache.enable_cli=1</code>

重新開機php-fpm程序:

通路:http://192.168.1.111:8080/view_phpinfo.php

view_phpinfo.php檔案代碼:

<code>&lt;?php</code>

<code>phpinfo();</code>

<code>?&gt;</code>

參數講解:

[opcache]   ZendOpcache配置開始

zend_extension=/app/php-5.4.24/lib/php/extensions/no-debug-non-zts-20100525/opcache.so  加載子產品檔案

opcache.memory_consumption=32  ZendOpcache共享記憶體的大小,用于存放precompiled PHP code,預設是64,機關是Mbytes

opcache.interned_strings_buffer=8  預設是4,interned_strings記憶體的數量,機關值MB

opcache.max_accelerated_files=1000  預設是2000,ZendOpcache散清單的key的最大數量

opcache.revalidate_freq=60  預設是2,檢查檔案時間戳的頻率,用于共享記憶體配置設定的變化

opcache.fast_shutdown=1   預設是0,如果激活,一個快速的關閉隊列将被用來加速代碼

opcache.enable_cli=1   預設是0,激活PHP CLI的ZendOpcache,用于測試和調試

在PHP5.5以上的版本中隻需要編譯PHP的時候指定--enable-opcache即可使用ZendOpcache。

生産環境PHP插件安裝建議:

eAccelerator-0.9.5.2.tar.gz适合PHP5.3及以前的版本,緩存加速使用 可選的PHP擴充插件。

eAccelerator-0.9.6.tar.bz2适合PHP5.3版本,PHP緩存加速,可選的PHP擴充插件。

ImageMagick.tar.gz常用圖像處理程式,屬于功能應用,非PHP擴充插件。

imagick-2.3.0.tgz需要先安裝圖像處理程式,屬于應用功能,可選的PHP擴充插件。

memcache-2.2.7.tgz是memcache用戶端資料庫緩存優化應用,可選的PHP擴充插件。

PDO_MYSQL-1.0.2.tar.gz是PHP資料庫庫通路插件,屬于PHP功能插件,可選的PHP擴充插件。

xcache-3.2.0.tar.bz2支援PHP5.1~PHP5.6緩存加速,可選PHP擴充插件。

zendopcache-7.0.5.tar.gz支援PHP5.3~PHP5.4緩存加速,可選的PHP擴充插件。

生産環境插件安裝建議:

對于功能性插件:

如果業務不需要使用,可以不考慮安裝。

如果不清楚是否需要安裝,最好安裝上。

對于性能優化插件:

eAccelerator、XCache、ZendOpcache、APC可以安裝其中任何一種。

具體情況看業務需求。最好進行壓力測試。

PHP加速插件性能測試對比:

eAccelerator在請求時間和記憶體占用綜合方面是最好的。

存在加速器比不存在加速器在請求時間方面快3倍。

什麼是phpize?

安裝PHP擴充的時候需要phpize,phpize是用來擴充PHP擴充子產品的。

通過phpize可以建立PHP的外挂子產品。

編譯PHP後,在bin目錄下會有phpize這個腳本檔案,再要添加子產品的目錄下執行這個腳本後出現一個configuer檔案。

./configuer後面可以很--with-php-config的檔案路徑。

在PHP指定編譯時指定了--with-mysql=mysqlnd和--with-pdo-mysql=mysqlnd的參數,在生産環境中可能會有socket連接配接問題。

解決方法時在php.ini中加入:

pdo_mysql.default_socket=/app/php/tmp/mysql.sock

 本文轉自 棋帥小七 51CTO部落格,原文連結:http://blog.51cto.com/xvjunjie/1967166