我编写了一个脚本,用于从数据库导出数据,然后将其放入XML文件中。脚本在无限循环中使用正确的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 &");
答案 0 :(得分:0)
显然,没有调用打破无限循环的if语句。
你能检查$ i和$ z的初始化值吗?此外,===检查2个变量是否属于相同类型且具有相同值。我建议你检查$ i和$ z变量的类型。