【问题标题】:PHP Script execution stops after 60 secsPHP 脚本执行在 60 秒后停止
【发布时间】:2019-04-05 10:24:22
【问题描述】:

此 PHP 脚本在 60 秒后终止。

我已经设置好了:

ini_set('max_execution_time', 0);

ini_set('memory_limit','1024M');

想要使用passthru或exec来执行php,并有递归函数来检查db中的状态:

function checkstatus() {
    $check_status = mysql_fetch_array(mysql_query("select * from table where status='1'",$con));

    $status=$check_status["status"];

    if ($status !== "1") {
            passthru("/usr/bin/php  abc.php");
            die();

        } else {
            sleep(30);  
            checkstatus();  
        }
}

【问题讨论】:

  • 问题是……?
  • 我使用递归函数检查数据库中的状态,脚本在 60 秒后终止
  • @sagarparad 这个函数的代码在哪里?
  • 试试 set_time_limit(0);在脚本的顶部。

标签: php mysql passthru


【解决方案1】:

停止使用MYSQL_ 函数。它们已被弃用,并已从现代 PHP 版本中删除!!


Status 是 MySQL 关键字,因此理想情况下应封装在反引号中。


$check_status = mysqli_fetch_array(
                mysqli_query($con,"select * FROM table WHERE `status`='1'")
                );

您只检查 where status='1' 的状态。因此if ($status !== "1") {始终false

因此,每次运行此脚本时,您总是会休眠 30 秒。这是对服务器资源的无限浪费。


问题答案:

要停止达到时间限制,请将this code 添加到脚本顶部:

set_time_limit(0); // set no limit.

然而,

看看你的脚本的形状看起来很糟糕;你 do not want 让 PHP 保持在 sleep 语句上。 Intead 您应该考虑使用每 30 秒执行一次的PHP Cron Job

【讨论】:

    最近更新 更多