0

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

如果我曾经file_get_contents()这样做,那么它将等到 url 返回。我可以在 CURL 中设置超时,但它允许的最小超时是一秒,所以这不是很有用。我已经在 CURL 中寻找其他选项,但我还没有找到任何东西。

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

4

4 回答 4

4

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

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

于 2012-06-20T05:40:56.143 回答
2

听起来您可能需要考虑将对 api 的调用移至后台作业。

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

或使用 db 表和 cron 作业自行开发。

于 2012-06-20T05:41:09.810 回答
0

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

于 2013-05-23T06:25:38.363 回答
0

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

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

希望这可以帮助!:)

于 2012-06-20T05:40:34.207 回答