Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/260.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中跨数据中心发出异步http请求_Php_Curl_Asynchronous_Gearman_Guzzle - Fatal编程技术网

如何在php中跨数据中心发出异步http请求

如何在php中跨数据中心发出异步http请求,php,curl,asynchronous,gearman,guzzle,Php,Curl,Asynchronous,Gearman,Guzzle,我们正在开发基于Kafka的事件收集管道,它将通过HTTP GET/POST请求接受传入事件。它应该能够通过运行在Nginx+PHP-FPM上的用户浏览器和web服务器接收事件。根据需求的本质,该管道必须具有弹性,因此我们将在AWS Singapore部署,而我们的客户服务web服务器位于印度孟买的物理数据中心。我们不想因此而引入任何延迟,因此PHP应用程序应该只触发一个请求,然后忘记它,一开始即使有~5%的请求丢失也可以。孟买和新加坡之间的往返速度约为70毫秒。我们可以使用哪些选项:- 超时

我们正在开发基于Kafka的事件收集管道,它将通过HTTP GET/POST请求接受传入事件。它应该能够通过运行在Nginx+PHP-FPM上的用户浏览器和web服务器接收事件。根据需求的本质,该管道必须具有弹性,因此我们将在AWS Singapore部署,而我们的客户服务web服务器位于印度孟买的物理数据中心。我们不想因此而引入任何延迟,因此PHP应用程序应该只触发一个请求,然后忘记它,一开始即使有~5%的请求丢失也可以。孟买和新加坡之间的往返速度约为70毫秒。我们可以使用哪些选项:-

  • 超时约100毫秒的Curl或fsockopen请求--不可接受
  • 使用像or这样的库——它只在内部使用curl,所以会再次引入延迟
  • 将请求本地写入一个文件,并使用Flume或Kafka之类的总线进行传输——实际上,我们将复制均匀的收集管道,增加硬件成本
  • 使用像gearman这样的工人队列——不是这方面的专家,所以不知道其利弊
  • 阳光下的任何东西,只要免费且维护费用低

请建议

我会使用jobqueue系统,即使它引入了另一层复杂性。这是在PHP中异步执行操作的最简单方法之一,并且保证几乎不占用同步处理器时间

你可以用Gearman或者。它们在PHP中都得到了很好的支持