Cache
Linux、Apache HTTPD 或 PHP 是否記憶體頻繁/最近訪問的文件?
假設我們有一個簡單的
index.php
文件:<?php inclde('file1.php'); inclde('file2.php'); inclde('file3.php');
據推測,這最終將導致三個額外的單獨的 I/O 請求到磁碟,除了
index.php
何時提供文件。現在,假設這個文件被放置在一個網站上並且經常被請求。如果這些文件以某種方式記憶體在記憶體中,而不是每次有人訪問網站時都發出 I/O 請求,那將是有意義的。
問題:
- Apache httpd 記憶體
index.php
嗎?- 那3個
include()
操作呢?- PHP 是否通過 Apache 從作業系統請求文件?使用哪種 mpm 模型有關係嗎?
- nginx、lighttpd 或任何其他網路伺服器是否進行記憶體?
- 這是否也取決於作業系統文件系統?即Linux作業系統通常會記憶體經常訪問的文件嗎?
- 或者是否有更低級別的記憶體?
- 或者 PHP 或任何其他伺服器應用程序引擎是否以某種方式記憶體文件並且 I/O 請求永遠不會到達作業系統?
由於磁碟 I/O 通常是最大的瓶頸,因此了解 Web 伺服器如何在各個級別記憶體文件可以幫助調整性能,甚至是應用程序開發,例如,可能連接短應用程序文件而不是多個文件有助於提高性能。
感謝您的幫助!
作業系統具有文件系統記憶體,它將讀/寫請求記憶體到實際的硬體設備。
然後是具體問題:
- Apache 不做記憶體。
- include() 函式在預設的 PHP 安裝中不做記憶體。如果你安裝了一個像 APC、Xcache 或 OPCache 這樣的 OPCode 記憶體,那麼它會在記憶體中記憶體程式碼的編譯版本。
- 文件系統訪問是通過作業系統文件系統呼叫完成的。
- 他們做任何記憶體沒有任何好處,因此他們不這樣做。文件系統記憶體足以用於靜態文件記憶體,並且任何動態語言都有更好的記憶體選項。
- Linux VFS 層進行記憶體,因此它不是由文件系統完成的。
- 硬碟本身也有一些記憶體,但在該層上的好處並不大,因為它沒有任何有利於記憶體的資料結構資訊。
- 是的,答案#2 中提到了正確的 OPcode 記憶體。