在我的PHP应用程序的一部分中,我需要进行REST样式的API调用并继续工作。我不关心API调用的结果(所以我不需要查看返回值)但我确实需要能够将其关闭并继续工作。
如果我使用file_get_contents()
执行此操作,则会等到网址返回。我可以在CURL中设置超时但它允许的最小超时是一秒,所以这不是很有用。我在CURL中寻找其他选项,但我还没有找到任何东西。
由于我已经编写了这部分正在被攻击的API,我现在只是立即返回并继续使用该代码,但将来如果我与其他外部API交谈,那么我将需要知道如何做这似乎是更好的做法,不依赖于一些外部代码让你的脚本继续工作。请求URL并不关心返回的内容可能不是很正常,但这正是我需要的!谁知道怎么做?
答案 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。