在我的PHP应用程序的一部分,我需要进行REST风格的API调用并继续工作。 我不关心 API 调用的结果(所以我不需要看到返回值),但我确实需要能够将其关闭并继续工作。
如果我使用 file_get_contents()
来执行此操作,那么它将等到 url 返回。 我可以在 CURL 中设置超时,但它允许的最小超时是一秒,所以这不是很有用。我已经在 CURL 中寻找其他选项,但还没有找到任何东西。
由于我已经编写了被击中的 API 的这一部分,我目前让它立即返回并继续使用该代码,但将来如果我与其他外部 API 交谈,那么我需要知道如何做到这一点,这似乎是更好的做法不依赖某些外部代码让您的脚本继续工作。请求 URL 而不关心返回的内容可能不是很正常,但这就是我需要的!有人知道怎么做吗?
只需使用 curl_multi_exec()
,并在返回响应标头后终止连接。
这假定在内容开始处理之前发送响应标头,并且在断开连接后远程脚本将继续运行。
听起来您可能需要考虑将对 API 的调用移动到后台作业。
你可能要考虑php resque,https://github.com/chrisboulton/php-resque
或者使用数据库表和 cron 作业来滚动自己的。
如果你可以从客户端尝试,也许这会有所帮助!
function loadNow()
{
$.load('cURL URL');
}
setInterval('loadNow()', 500);
希望这有帮助! :)
如果您的输出是 HTML,您可能需要考虑将调用移动到 iframe 中。