簡體   English   中英

PHP響應並行請求

[英]PHP react parallel requests

我有一個可通過websocket與服務器通信的應用程序。 我正在使用棘齒系統,一切正常。 我要實現的下一件事是向其他服務器發出請求,並通過Websocket將響應推送到客戶端。 我的問題是如何做出並行請求。 假設我有5個端點,我想獲得並行(線程)響應。 我想例如每隔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');

});

但是此計時器無法以這種方式工作。 甚至有可能通過反應達到這一目標?

我沒有顯示websocket代碼,因為客戶端之間的通信很好。

開始。 React(Ratchet) ”-在一個線程模式下運行(功能libevent)。 就是說,任何會阻塞進程的東西-不好的主意...卷曲請求-都會停止工作套接字服務器,直到它收到響應為止。

對於您的應用程序-我將使用ZMQ 關鍵是這樣的:

  • 您運行工作進程(例如:ZMQWorker),
  • 您的服務器(通過ZMQ)在ZMQWorker上發送curl數據。
  • ZMQWorker發送卷曲請求
  • 發送請求后, ZMQWorker將響應發送到WebSocket (通過ZMQ)。 你可以通過reactphp / zmq獲得

如果您需要發送大量並發請求-您將需要pthread庫-它提供了多線程。

我也聽說有可能提供pthread + libevent工作,但是我個人沒有這樣做。

PS 但是使用架構ZMQ,您可以獲得分布式架構,並且具有相同的可擴展性!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM