我编写了一个脚本,从数据库导出数据,然后将其放入XML文件。脚本在无限while循环中使用适当的break语句(在任务完成后)。任务耗时10分钟。当我发出http请求来启动一个作业时,我使用的浏览器完全冻结了-不仅请求的URL,而且整个主机。在同一时间与其他浏览器,我可以浏览网页,其中包含我的脚本。
我的PHP脚本的一个片段:
while(true)
{
if($i === $z)
{
break;
}
foreach((array)$this->project as $project)
{
makeYourJob();
usleep(1000000);
$z++;
}
usleep(2000000);
}
脚本是用以下jquery代码调用的(我输入包含该代码的HTML页面的地址):
$.get("cron.php");
我也试着在URL栏中输入cron.php,浏览器也挂起了。为什么运行脚本的浏览器会冻结?如何避免这种情况?
编辑:通过ajax或用户进行简单的get/post请求并不能解决问题。这篇文章不是重复的。下面是一个解决方案:
exec("wget http://www.domain.com/scrip_name.php > /dev/null &");
显然,打破无限循环的if语句没有被调用。
你能检查$i和$z的初始值吗?此外,===检查两个变量是否具有相同的类型和相同的值。我建议您检查$ I和$z变量的类型