0

我写了一个脚本,从数据库中导出数据,然后把它放到 XML 文件中。脚本在具有正确 break 语句的无限 while 循环中工作(任务完成后)。任务需要 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 &");
4

1 回答 1

0

显然,没有调用中断无限循环的 if 语句。

你能检查 $i 和 $z 的初始化值吗?此外, === 检查 2 个变量是否具有相同的类型和相同的值。我建议您检查 $i 和 $z 变量的类型。

于 2013-04-25T14:00:18.727 回答