簡體   English   中英

認真加速PHP?

[英]Seriously speeding up PHP?

我已經寫PHP多年了,並且在陽光下使用了每個框架,但是一件事一直困擾着我……那就是,每當有人告訴我的服務器他們想要的東西時,就必須解釋和執行整個流血的事情。頁面已投放。

我已經嘗試過緩存,FastCGI,Zend Job Queue(以及類似的symfony插件-以及我自己的基於DB的解決方案,這些解決方案實現了System_Daemon類以運行后台進程),並且設法使應用程序使用所有這些東西的速度都相當快...但是我無法克服我的設置文件,系統/環境檢查功能以及所有僅應一次加載的所有東西的心理障礙...每當某人被加載時,點擊我的頁面。

因此,我的漫步導致以下問題-

是否有某種方法/技術可以將PHP的某些方面加載到RAM中,以便在請求該頁面時,我的所有settings.yml文件,系統檢查,框架文件,緩存的頁面等都可以直接從內存中加載,甚至無需接觸HD ...還是每天需要通過相同的加載機制50,000次來啟動程序?

如果PHP中沒有任何內容...是否可以通過這種方式編譯其他“網絡”語言,以允許真正的一次啟動應用程序?

如果您正在談論緩存數據,我認為您應該嘗試一下memcached 我認為,如果您在apache中使用mod_php之類的東西(不會在兩次請求之間死亡),PHP會相當熟練地緩存已編譯的php頁面。

看一下APC(備用PHP緩存) ,它保留了已編譯文件的緩存(PHP Opcode),還允許您使用apc_fetch,apc_store將隨機變量存儲在內存中。

安裝非常簡單,確實可以提高性能。

在ram磁盤上創建一個完整的頁面緩存,並使您的Web服務器從那里提供頁面。 這是wordpress超級緩存插件使用的一種方法,如果您的網站適合全頁緩存,則該方法效果很好。 這樣,您甚至都沒有調用PHP解釋器。

對於已登錄(具有打開的會話)的用戶,您可以創建一個重寫條件,該條件會將他們的請求重定向到PHP引擎。

此外,請始終使用操作碼緩存(如APC)並將其用於緩存配置文件(內存緩存也可以)。

如果您要使用類似JVM / Tomcat的應用程序服務器,那么答案可能是“否”。 據我所知,PHP沒有這樣的(可用)東西。 PHP使用無共享架構,因此在設計上,所有內容都針對所有請求進行了設置。 但是實際上,這使PHP可以很好地擴展。

至於加速應用程序,請嘗試使用memcached代碼加速器 也許看看Zend Server以獲得完整的軟件包。

關於您的最后一個問題,我相信至少大多數Python和Ruby Web框架都是這樣工作的。

如今,Ruby Web應用程序已構建,因此該應用程序在每個服務器進程中僅初始化一次。 當請求進入時,服務器(例如Apache)將它們傳遞到在后台運行的Web應用程序(通過Rack接口)。

這就是基於Rack的 Web框架的工作方式。 Ruby on Rails的舊版本相似,盡管它們使用不同的界面與Web服務器通信。

我會密切注意Facebook Engineering ppage( http://www.facebook.com/notes.php?id=9445547199 ),然后他們不時提出有關如何快速/優化/擴展內容的帖子。 。 我認為他們對php的使用非常令人印象深刻。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM