循环PHP脚本没有浏览器

dek*_*vin 0 php mysql loops

我不确定为什么这不像我想的那样工作.这是一个非常简单的循环,它从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;
    }
    ?>
Run Code Online (Sandbox Code Playgroud)

Nie*_*sol 5

XKCD
> xkcd

您的代码将更好地重组为:

while(1) {
    // run query
    if( /* no rows */ ) sleep(10);
    else { /* run code */ }
}
Run Code Online (Sandbox Code Playgroud)

除此之外,您可以通过SSH(使用PuTTY之类的程序)并运行命令登录服务器来启动此脚本:

/usr/bin/php your_php_script.php
Run Code Online (Sandbox Code Playgroud)

请注意,PHP的实际位置可能会有所不同,有时它会有所不同,/usr/php但如果这不起作用,您的主机应该能够帮助您找到它.

如果您没有shell访问权限,那么cron脚本将是您最好的选择 - 只需确保将脚本更改为:

// run query
while( /* get result row */ ) {
    // do something
}
Run Code Online (Sandbox Code Playgroud)