60秒后,PHP脚本执行将停止

时间:2019-04-05 10:24:22

标签: php mysql passthru

此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();  
        }
}

2 个答案:

答案 0 :(得分:2)

enter image description here

停止使用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语句上。您应该考虑使用每30秒执行一次的PHP Cron Job

答案 1 :(得分:0)

请尝试以下解决方案

set_time_limit(0); 
ignore_user_abort(true);
ini_set('max_execution_time', 0);

希望它能对您有所帮助。