我正在尝试执行自动清理功能,不知何故,我的代码按照我希望的方式工作。
function autoclean() {
$todo = array('fetchnews|15', 'sayhello|20');
foreach ($todo as $do) {
$do = explode('|', $do);
$res = mysql_query("SELECT txt FROM x_other WHERE title='".$do[0]."'") or sqlalert(__FILE__, __LINE__);
$row = mysql_fetch_array($res);
if ($row[0] + $do[1] > time())
return;
mysql_query("UPDATE x_other SET txt=".time()." WHERE title='".$do[0]."'") or sqlalert(__FILE__, __LINE__);
if (!mysql_affected_rows())
return;
$do[0]();
}
}
这应该每15秒做一次fetxhnews(),每20秒做一次(或者)。 第一个完美地工作,但是当fetchnews()第二次运行(30秒)时,sayhello()运行。
编辑:我发现为什么它没有用。function autoclean() {
$todo = array('fetchnews|15', 'sayhello|20');
foreach ($todo as $do) {
$do = explode('|', $do);
$res = mysql_query("SELECT txt FROM x_other WHERE title='".$do[0]."'") or sqlalert(__FILE__, __LINE__);
$row = mysql_fetch_array($res);
if ($row[0] + $do[1] < time()) {
mysql_query("UPDATE x_other SET txt=".time()." WHERE title='".$do[0]."'") or sqlalert(__FILE__, __LINE__);
$do[0]();
}
}
}
回归;杀了它。上面的代码现在有效。 或者它仍然是一个更好的解决方案?希望它尽可能快