此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();
}
}
答案 0 :(得分:2)
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);
希望它能对您有所帮助。