Nginx 如何使用ZeroMQ和PHP-FPM进行连接池 对不起,也许是个跛脚的问题,我是C++的家伙。

Nginx 如何使用ZeroMQ和PHP-FPM进行连接池 对不起,也许是个跛脚的问题,我是C++的家伙。,nginx,connection-pooling,zeromq,php,Nginx,Connection Pooling,Zeromq,Php,你能解释一下我是如何有效地支持很多ZeroMQ php客户端的吗 我在RedHat服务器上使用nginx和php fpm 假设我在client.php中有以下代码,它可以服务于数千个web客户端 $client = new ZMQSocket($context,ZMQ::SOCKET_REQ); $client->connect("tcp://localhost:5555"); $client->send($sequence); 这是否意味着给定的代码将在每个http请求上重新连接

你能解释一下我是如何有效地支持很多ZeroMQ php客户端的吗

我在RedHat服务器上使用nginx和php fpm

假设我在
client.php
中有以下代码,它可以服务于数千个web客户端

$client = new ZMQSocket($context,ZMQ::SOCKET_REQ);
$client->connect("tcp://localhost:5555");
$client->send($sequence);
这是否意味着给定的代码将在每个http请求上重新连接到zeromq服务器?在我看来,它效率极低。ZeroMQ和PHP-FPM是否存在连接池

我应该怎样做才好


另外,阅读文档后,看起来像是池的候选位置,但我不确定。

是的,这意味着在每次请求时,您都会重新连接。如果你想扩展你的ZMQ+PHP设置,你应该在PHP中获得并创建一个worker,这就减少了对FPM的需求,而FPM又允许你通过插入更多worker来横向扩展,之后mongrel使用循环系统将请求定向到每个worker。有一个很好的例子和框架ready,它运行速度惊人,效率很高,但还没有完全优化(但仍然很快)。@N.B.谢谢你的详细评论。如果我还不能从nginx转换,你会有什么建议?如果我在同一个框中运行用C编写的0mq服务器,该服务器将在Unix域套接字上侦听,php客户端将在每个http请求上连接到该服务器,该怎么办?我不知道与Unix域套接字建立连接的成本是多少。我怀疑它很便宜。
php
通常是一种类似的语言。您应该寻找诸如Ruby之类的东西。如果您运行C服务器,您必须实现事件循环或线程来管理连接的客户机,这是底层服务器最初所做的。不过,根据我的经验,您可以试一试——用您选择的语言创建一个守护进程,在大约100个请求后重新启动是最好的选择,因此您可以基于一种语言保留代码库@VBart-你在传播错误信息,除非你100%确定你所发布的信息是正确的,否则请不要这样做。@N.B.这是100%正确的。