Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP响应并行请求_Php_Multithreading_Websocket_Ratchet - Fatal编程技术网

PHP响应并行请求

PHP响应并行请求,php,multithreading,websocket,ratchet,Php,Multithreading,Websocket,Ratchet,我有一个通过websocket与服务器通信的应用程序。我用的是棘轮,一切都很完美。接下来我要实现的是向其他服务器发出请求,并通过websocket将响应推送到客户端。我的问题是如何与react并行请求。假设我有5个端点,我希望得到并行响应(线程)。例如,我想每隔.2秒调用每个端点,并向websocket服务器客户端发送响应。例如(这只是演示代码): 但是这个计时器不是这样工作的。甚至有可能用react来实现这一点吗 我没有显示websocket代码,因为客户端之间的通信效果很好 开始。“反应(棘

我有一个通过websocket与服务器通信的应用程序。我用的是棘轮,一切都很完美。接下来我要实现的是向其他服务器发出请求,并通过websocket将响应推送到客户端。我的问题是如何与react并行请求。假设我有5个端点,我希望得到并行响应(线程)。例如,我想每隔.2秒调用每个端点,并向websocket服务器客户端发送响应。例如(这只是演示代码):

但是这个计时器不是这样工作的。甚至有可能用react来实现这一点吗

我没有显示websocket代码,因为客户端之间的通信效果很好

开始。“反应(棘轮)”-在单线程模式下操作(功能libevent)。也就是说,任何会阻碍这一进程的事情——坏主意。。。Curl请求-将停止工作套接字服务器,直到它收到响应

对于您的应用程序-我将使用ZMQ。 关键是:

  • 运行辅助进程(例如:ZMQWorker)
  • 您的服务器在ZMQWorker上发送curl数据(通过ZMQ)
  • ZMQWorker发送Curl请求
  • 发送请求后,ZMQWorker向WebSocket发送响应 (通过ZMQ)。您可以通过reactphp/zmq
如果您需要发送大量并发请求-您将需要pthread库-它提供多线程

我还听说可以提供工作pthread+libevent,但我个人没有这样做


但是使用架构ZMQ,你可以得到一个分布式架构,达到同样的可扩展性

由于您需要每0.2秒加载一次这些页面,是否可以将这些页面连接到您的websocket,并在这些页面更新时将更新发送给所有需要它的连接?
$server->loop->addPeriodicTimer(.2, function ($timer) {
    curl('endpoint1');
});

$server->loop->addPeriodicTimer(.2, function ($timer) {
    curl('endpoint2');
});

$server->loop->addPeriodicTimer(.2, function ($timer) {
    curl('endpoint3');

});