[英]Using PHP-FPM inside a PHP process
該設置是使用PHP-FPM在同一服務器上運行的兩個獨立的PHP項目。 當前,他們通過使用cURL發出HTTP請求,通過JSON彼此“講話”。
這里的問題是cURL和Web服務器的開銷是浪費時間。 畢竟所有其他程序都在該文件夾中,位於當前文件夾上方。 那么,為什么要使用cURL和HTTP呢? 訣竅是,我不能僅在其他項目中包含文件,因為自動加載器會發生沖突並造成很大的混亂。 因此,他們需要單獨的流程並且不要共享太多。
我提出的解決此問題的建議是創建一個Node.js服務器,該服務器偵聽我的PHP進程可以連接的套接字,並能夠使用node-phpfpm模塊直接向PHP-FPM發出請求。 雖然這可以解決問題,但我想問自己為什么需要Node.js代理?
必須有一種直接從PHP發出新的FPM請求的方法,但我沒有找到它。
我知道我也可以將CLI可執行文件與exec()一起使用,但這一點都不漂亮。 更具體地說,用exec()傳遞請求數據幾乎是不可能的。
您可以使用以下庫,例如,通過UNIX或TCP / IP套接字直接從PHP腳本向PHP-FPM實例發出請求: https : //github.com/ebernhardson/fastcgi
示例代碼,基於自述文件:
<?php
use EBernhardson\FastCGI\Client as FastCGIClient;
use EBernhardson\FastCGI\CommunicationException;
$client = new FastCGIClient('/var/run/php5-fpm.sock');
try {
$client->request([
'REQUEST_METHOD' => 'POST',
'SCRIPT_FILENAME' => '/full/path/to/script.php',
], $postBody);
$response = $client->response();
} catch (CommunicationException $e) {
// Handle exception
}
您還可以考慮其他庫: https : //packagist.org/search/?q=fastcgi
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.