簡體   English   中英

在PHP流程中使用PHP-FPM

[英]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.

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