在PHP进程中使用PHP-FPM

时间:2016-03-19 19:52:14

标签: php

设置是使用PHP-FPM在同一服务器上运行的两个独立的PHP项目。目前,他们通过使用cURL发出HTTP请求,通过JSON相互“说话”。

这里的问题是cURL和Web服务器开销是浪费时间。在所有其他程序就在那之后,在当前文件的正上方的文件夹中。那么为什么要使用cURL和HTTP呢?诀窍是我不能只是在另一个项目中包含一个文件,因为自动加载器会发生冲突并造成很大的混乱。出于这个原因,他们需要单独的流程,而不是分享太多。

我提出的解决问题的方法是创建一个Node.js服务器,该服务器侦听我的PHP进程可以连接的套接字,并且能够使用node-phpfpm模块直接向PHP-FPM发出请求。虽然这解决了这个问题,但我问自己为什么需要Node.js代理?

必须有一种方法可以直接从PHP发出新的FPM请求,但我还没有找到它。

我知道我也可以在exec()中使用CLI可执行文件,但这根本不是很好。更具体地说,使用exec()传递请求数据几乎是不可能的。

1 个答案:

答案 0 :(得分:1)

您可以直接通过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