如何在当前脚本完成时运行php

时间:2011-11-12 14:05:28

标签: php

当前脚本完成使用curl时如何运行php?  不能使用shell或set_time_limit来循环脚本。

编辑: 我希望能够使用curl来调用相同的脚本,但是当我使用curl_exec时,我不希望脚本等到curl完成,我只是想让它调用页面并继续前进而不等待curl完成

编辑:

在脚本开头使用此代码

ignore_user_abort(true);
header("Content-Length: 0");
header("Connection: close");
flush();

然后使用curl使脚本调用它自己在Windows上工作,但在Linux上它没有!又名,我希望curl调用页面而不是等待回复

由于

2 个答案:

答案 0 :(得分:3)

您希望能够在不等待的情况下运行CURL请求。

通常,您将启动一个新线程来运行其中的CURL请求,但PHP doesn't have support for multithreading

如果您允许使用popenproc_open,则可以运行后台进程。您可以运行CLI PHP脚本来执行CURL请求。

另一个想法是在DB表中写入请求,并且每隔X分钟对表执行一次cron CLI脚本轮询并执行任何挂起的请求。

答案 1 :(得分:1)

找到它:

将其添加到脚本的开头:

ignore_user_abort(true);
header("Content-Length: 256");
header("Connection: close");
echo(str_repeat(' ',256));
@ob_flush();
@flush();
@ob_end_flush();

然后通过curl从另一个2_script调用此1_script允许其他2_script完成其进程而无需等待1_script完成! 。只是curl在收到256个bye之前不会读取“connection:close”标题,所以我们通过空格发送它们:)