有沒有人有使用PHP加速器的經驗,如MMCache或Zend Accelerator?我想知道,如果使用這兩種方法中的任何一種,PHP都可以比得上更快的網絡技術。另外,是否有權利使用這些?編譯PHP?
編譯PHP?
回答
請注意,Zend Optimizer和MMCache(或類似的應用程序)是完全不同的東西。雖然Zend Optimizer試圖優化程序操作碼,但MMCache會將腳本緩存在內存中並重新使用預編譯的代碼。
我做了一些基準,前一段時間,你可以找到在我的博客中results(德國雖然)。基本結果如下:
Zend Optimizer本身並沒有幫助。其實我的腳本比沒有優化器慢。
當涉及到緩存: *最快:eAccelerator * XCache * APC
和:你想安裝一個操作碼緩存!
例如: alt text http://blogs.interdose.com/dominik/wp-content/uploads/2008/04/opcode_wordpress.png
這是它採取調用WordPress的主頁10.000倍的時間。
編輯: BTW,eAccelerator本身包含一個優化器。
根據所執行的有多少你的PHP代碼的實際執行和需要多長時間他們可以是一個真正的大勝利。它當然不會受到傷害,但是你看到的收益將取決於你的時間在哪裏。
BTW mmcache已經被捲成不同的項目現在,名字我忘了,但谷歌會告訴你。
兩者都很有趣,並且會提供速度提升,因爲它們將源代碼編譯爲二進制表示,然後由PHP引擎執行。
任何巨大的網站使用PHP(臉譜例如)運行在運行某種操作碼緩存系統,如MMCache的。
問題是,根據您的系統,它們不是很容易設置。
MMCache已被棄用。我推薦使用http://pecl.php.net/package/APC或http://xcache.lighttpd.net/,這兩者都可以爲您提供可變的存儲空間(如Memcache)。
你檢查過Phalanger嗎?它將PHP編譯爲.NET代碼。這裏有some benchmarks這表明它可以顯着提高性能。
進一步基準:http://www.php-compiler.net/benchmarks – Eldros 2011-09-15 12:05:44
我在當天使用了Zend Accelerator(2004-ish)。它肯定在它可以使用的代碼上獲得了一些重要的性能勝利,但是不幸的是我使用的系統經常動態地加載代碼然後對它進行評估,Zend Accelerator當時無法做很多事情(和我一樣, d猜猜還是不行)。
不利的一面是,我們當然看到了一些緩存問題(這裏的代碼會改變,但與一個或其他原因更改的編譯版本同步)。我想現在可能已經解決了這些問題。
反正我沒有任何硬比較數字,肯定沒有寫在不同的環境相同的系統進行比較,但對於絕大多數的系統,PHP是不會殺你明智的性能。
我在我的生產服務器上使用APC,開箱即可使用。編譯並將其添加到PHP中,並沒有太多的調整。我每隔一段時間檢查一次,只是爲了回顧統計數據,但由於我使用MVC,所有主要文件(路由器,控制器等)很少在每天的基礎上進行更改,以便代碼保持編譯並且運行效率非常高。
目前我們使用apc,免費,只是一個簡單的即插即用在我們的服務器上。爲我們的網站提供了巨大的性能提升,特別是隨着項目規模的增加。我也禁用了apc.stat,因此它不檢查代碼是否已更新,所以無論何時我們需要更新實時網站上的代碼,我們都會重新啓動apache。
我使用APC,並且可以證明,如果您保持高緩存命中率,它可以顯着減少應用程序服務器上的CPU和I/O負載。它不僅可以避免你編譯,而且可以讓你不必從磁盤讀取php文件。 (即字節碼直接從主內存中提供,因此速度非常快)它降低了渲染單個頁面的速度,並增加了服務器每秒可處理的請求。
如果您使用的RedHat或CentOS的,安裝APC是超級簡單:
yum install php-devel httpd-devel php-pear
pecl install apc
echo "extension=apc.so" > /etc/php.d/apc.ini
# if you're using SELinux:
chcon "system_u:object_r:textrel_shlib_t" /usr/lib/php/modules/apc.so
/etc/init.d/httpd restart
你問缺點。唯一的缺點是它需要一些內存。 APC上的默認值是30MB,但可以調整,並且一點點內存的成本超過了本身的速度和響應速度。
BlaM的測試包括WordPress所做的所有數據庫調用。當您撥打更少的數據庫電話時,您會發現操作碼緩存的性能提升更加顯着。
同意。我也有其他一些測試。但我決定去「真實世界」的例子;) – BlaM 2009-05-19 08:16:14
- 1. 編譯PHP擴展
- 2. 重新編譯PHP
- 3. 編譯PHP擴展
- 4. 編譯PHP-IB的
- 5. 編譯器更新後編譯.php中的PHP致命錯誤
- 6. PHP腳本如何編譯?
- 7. 開始編譯PHP擴展
- 8. 編譯C++使用PHP
- 9. PHP XSLTProcessor編譯錯誤
- 10. php pregmatch - 編譯失敗
- 11. PHP日期編譯器
- 12. 在Windows上編譯PHP 7
- 13. 編譯PHP錯誤與freetype
- 14. 編譯PHP - bison版本?
- 15. PHP 5.2 preg_match()編譯失敗
- 16. PHP與舊的OpenSSL編譯
- 17. 查看編譯PHP文件
- 18. hiphop-php編譯錯誤
- 19. Apache不能編譯php
- 20. php的二進制代碼(編譯php)
- 21. 編譯編譯器錯誤編譯GCC
- 22. 用python編譯編譯vim
- 23. 在編譯期間編譯
- 24. C#編譯智能編譯
- 25. 編譯PHP 5.1.6與PDO的MySQL
- 26. PHP編譯無內存限制
- 27. 使用UCLIBC交叉編譯PHP
- 28. PHP 5.6升級編譯的舊擴展
- 29. 重新編譯並重新安裝php
- 30. PHP與readline支持編譯爲Windows
您應該將標題更改爲「加速PHP」。儘管關於編譯PHP有許多問題,但這完全不是關於編譯器的。 – 2009-09-26 13:15:39