簡體   English   中英

有沒有一種方法可以在Apache父級的php中預加載代碼?

[英]is there a way to preload code in php in the Apache parent?

我想在Apache子進程處理PHP請求之前在初始化時在Apache中運行一些代碼。 這將必須在Apache父級中發生。 它將設置一些新的全局變量。

當孩子奔跑時,這些新變量將在那里等待。

不能選擇APC(因為類似的代碼),因為這種代碼運行起來很昂貴。

我試圖避免編寫PHP模塊。

就個人而言,我將php_value auto_prepend_file config.inc.php放在.htaccess中(或放在httpd.conf中),以使config.inc.php在執行任何PHP腳本來設置全局變量之前運行。

請注意,這是針對每個請求運行的,因此,如果它是一個很大的安裝腳本,它將很昂貴。

另外,如果將PHP作為CGI安裝,這將不起作用,在這種情況下,您需要在php.ini中設置auto_prepend_file設置。

最好的方法是按照daiscog的指示使用自動前置。 如果出於某種原因需要在apache中進行設置,則可以使用環境變量傳遞它們:

根據需要使用apache設置它們, https: //httpd.apache.org/docs/2.2/env.html,並使用$ _ENV在PHP中訪問它們-雖然這顯然不適用於“復雜”的php變量(例如數組),您可以使用它來將字符串從apache傳遞到php。

Apache本身無法執行預加載的PHP代碼並為每個父級設置變量。 這是一個已編譯的應用程序,它僅通過服務器api執行PHP代碼,因此與PHP的內存共享不多。 那基本上是兩個世界。

但是,有效的是使用PHP構建的Web服務器。 這樣的網絡服務器可以在HTTP請求之間保存變量。 影響所有全局變量。 因此,您的代碼必須與該模式兼容,並徹底關閉應該卸載的部分(永遠不會卸載代碼,僅會取消設置全局變量)。

這樣的網絡服務器是appserver-in-php

但是我不完全了解您要如何/為什么/為什么要阻止編寫PHP模塊(以及哪種?編譯?在用戶空間中進行?)。

暫無
暫無

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

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