Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.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-从POST获取数据并将其发布到另一个url以提高性能_Php_Api - Fatal编程技术网

PHP-从POST获取数据并将其发布到另一个url以提高性能

PHP-从POST获取数据并将其发布到另一个url以提高性能,php,api,Php,Api,我有一个URL,example.com/api-handler/handler1.php 我们的一家短信服务提供商将数据推送到上述URL 上面的URL包含很多条件,处理数据需要20-30秒 由于处理时间过长,SMS服务提供商在其终端遇到了一些性能问题 到目前为止,我所做的是使用相同的代码创建另一个URL,即example.com/api-handler/handler2.php 然后修改了handler1.php的代码。现在handler1.php只需获取数据并使用CURL将其发布到handle

我有一个URL,example.com/api-handler/handler1.php

我们的一家短信服务提供商将数据推送到上述URL

上面的URL包含很多条件,处理数据需要20-30秒

由于处理时间过长,SMS服务提供商在其终端遇到了一些性能问题

到目前为止,我所做的是使用相同的代码创建另一个URL,即example.com/api-handler/handler2.php

然后修改了handler1.php的代码。现在handler1.php只需获取数据并使用CURL将其发布到handler2.php

我这样做是因为我认为它将在2-3秒内响应SMS服务器,但处理时间仍然相同

我可以使用会话来消除这种情况,但不能使用会话,因为我们接收的数据非常频繁


有没有其他方法可以更快地响应handler1.php上的服务提供商,然后稍后再处理handler2.php上的数据?

问题在于php中的curl请求被阻塞。这意味着您的第一个文件
handler1.php
将等待
handler2.php
处理所有内容

最好的解决方案是使用适当的队列服务:从
handler.php
将数据添加到队列中,然后由第二个文件处理

一个更简单、更不健壮的解决方案是在cURL请求上设置一个较低的
CONNECTION\u TIMEOUT
值,以便您的第一个脚本停止等待cURL请求完成:

curl_setopt($ch, CURLOPT_TIMEOUT_MS, 200);

你要找的是排队工人。您在第二个处理程序中接收到一条消息—将其推送到队列,然后工作人员将从队列中获取消息并延迟处理。阅读rabbitMQ或redisMQ内容。@myxaxa感谢您的宝贵建议。然而,巴杜齐分享的解决方案对我来说很有效。非常感谢@gbalduzzi。设置超时方法有效。很乐意提供帮助:)