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