我不确定为什么这不像我想的那样工作。这是一个非常简单的循环,它从mysql dm中查找值。我随时插入我希望它执行的值。
我考虑过cron作业,但有时脚本需要更长的时间,因此我不会单独启动代码。
有谁知道如何解决这个问题?
<?php
a1:
set_time_limit(0);
include_once "mysql_con.php";
$result = mysql_query("SELECT * FROM requests WHERE status='pending' ORDER BY id DESC LIMIT 1");
$num_rows = mysql_num_rows($result);
if ($num_rows == 0) {
sleep(10);
goto a1;
}
else
{
// CODE
goto a1;
}
?>
答案 0 :(得分:5)
&GT; xkcd
您的代码将更好地重组为:
while(1) {
// run query
if( /* no rows */ ) sleep(10);
else { /* run code */ }
}
除此之外,您可以通过SSH(使用类似PuTTY之类的程序)登录服务器并运行命令来启动此脚本:
/usr/bin/php your_php_script.php
请注意,PHP的实际位置可能会有所不同,有时候会是/usr/php
,但如果这不起作用,您的主机应该可以帮助您找到它。
如果您没有shell访问权限,那么cron脚本将是您最好的选择 - 只需确保将脚本更改为:
// run query
while( /* get result row */ ) {
// do something
}