如何在php中跨数据中心发出异步http请求
我们正在开发基于Kafka的事件收集管道,它将通过HTTP GET/POST请求接受传入事件。它应该能够通过运行在Nginx+PHP-FPM上的用户浏览器和web服务器接收事件。根据需求的本质,该管道必须具有弹性,因此我们将在AWS Singapore部署,而我们的客户服务web服务器位于印度孟买的物理数据中心。我们不想因此而引入任何延迟,因此PHP应用程序应该只触发一个请求,然后忘记它,一开始即使有~5%的请求丢失也可以。孟买和新加坡之间的往返速度约为70毫秒。我们可以使用哪些选项:-如何在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毫秒。我们可以使用哪些选项:- 超时
- 超时约100毫秒的Curl或fsockopen请求--不可接受
- 使用像or这样的库——它只在内部使用curl,所以会再次引入延迟
- 将请求本地写入一个文件,并使用Flume或Kafka之类的总线进行传输——实际上,我们将复制均匀的收集管道,增加硬件成本
- 使用像gearman这样的工人队列——不是这方面的专家,所以不知道其利弊
- 阳光下的任何东西,只要免费且维护费用低李>
请建议 我会使用jobqueue系统,即使它引入了另一层复杂性。这是在PHP中异步执行操作的最简单方法之一,并且保证几乎不占用同步处理器时间 你可以用Gearman或者。它们在PHP中都得到了很好的支持