[php] 如何處理好autoload

來源:互聯網
上載者:User

在有了諸如apc之類的cache之後,php的autoloader成為了需要認真考慮的效能點。

參見:

http://stackoverflow.com/questions/4788452/does-autoload-really-kill-performance-when-using-apclatest-versions-up-to-date

http://tournasdimitrios1.wordpress.com/2013/04/15/boosting-the-performance-of-a-php-project-with-an-autoload-class-map-2/

有資料說autoloader和apc並不衝突。但是autoloader仍然需要每次request都要去require_once,這會帶來額外的磁碟stat()操作。能否繼續最佳化呢?

有個思路是利用class_exists,然後週期性檢查php file是否已更新。這可以避免每次請求都一堆的require_once造成的磁碟stat()操作。

大多數應用並不關心php檔案是否延遲100毫秒才更新到最新版。定時、延時的php file版本更新應該是可接受的。不知道require_once()內部有沒有做這種最佳化。

也許應該讓require_once()函數直接帶上個參數,指明磁碟stat()的調用間隔。這可以簡單但是有效提高效能。

查了下apc的資料:

apc.stat

apc.include_once_override

看來apc也注意到了這個問題,但是apc的解決方案貌似還不成熟。目前仍是EXPERIMENTAL的。

有篇文章很好的解釋了apc和require_once的關係:http://www.laruence.com/2012/09/12/2765.html

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.