设置是使用PHP-FPM在同一服务器上运行的两个独立的PHP项目。目前,他们通过使用cURL发出HTTP请求,通过JSON相互“说话”。
这里的问题是cURL和Web服务器开销是浪费时间。在所有其他程序就在那之后,在当前文件的正上方的文件夹中。那么为什么要使用cURL和HTTP呢?诀窍是我不能只是在另一个项目中包含一个文件,因为自动加载器会发生冲突并造成很大的混乱。出于这个原因,他们需要单独的流程,而不是分享太多。
我提出的解决问题的方法是创建一个Node.js服务器,该服务器侦听我的PHP进程可以连接的套接字,并且能够使用node-phpfpm模块直接向PHP-FPM发出请求。虽然这解决了这个问题,但我问自己为什么需要Node.js代理?
必须有一种方法可以直接从PHP发出新的FPM请求,但我还没有找到它。
我知道我也可以在exec()中使用CLI可执行文件,但这根本不是很好。更具体地说,使用exec()传递请求数据几乎是不可能的。
答案 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