在PHP中尽可能快地命中URL

时间:2012-06-20 05:35:26

标签: php performance api rest

在我的PHP应用程序的一部分中,我需要进行REST样式的API调用并继续工作。我不关心API调用的结果(所以我不需要查看返回值)但我确实需要能够将其关闭并继续工作。

如果我使用file_get_contents()执行此操作,则会等到网址返回。我可以在CURL中设置超时但它允许的最小超时是一秒,所以这不是很有用。我在CURL中寻找其他选项,但我还没有找到任何东西。

由于我已经编写了这部分正在被攻击的API,我现在只是立即返回并继续使用该代码,但将来如果我与其他外部API交谈,那么我将需要知道如何做这似乎是更好的做法,不依赖于一些外部代码让你的脚本继续工作。请求URL并不关心返回的内容可能不是很正常,但这正是我需要的!谁知道怎么做?

4 个答案:

答案 0 :(得分:4)

只需使用curl_multi_exec(),并在返回响应标头后终止连接。

这假设响应标头在内容开始处理之前发送,并且一旦断开连接,远程脚本将继续运行。

答案 1 :(得分:2)

听起来你可能想考虑将api的调用转移到后台作业。

您可能需要考虑php resque,https://github.com/chrisboulton/php-resque

或使用db表和cron作业自行滚动。

答案 2 :(得分:0)

如果您可以从客户端尝试,可能会有所帮助!

function loadNow()
{
    $.load('cURL URL');
}
setInterval('loadNow()', 500);

希望这有帮助! :)

答案 3 :(得分:0)

如果您的输出是HTML,则可能需要考虑将调用移至iframe。