我将以下php代码设置为作为CRON作业运行。它每天运行一次,永远不会返回错误,所以我认为它运行正常。问题是,没有从我的数据库中删除行!
我已经测试了php和变量的工作原理。我已经测试了我的查询,这也有效,所以我不知所措......
<?php
$isCLI = ( php_sapi_name() == 'cgi-fcgi' );
if (!$isCLI)
die("cannot run! sapi_name is ".php_sapi_name());
exit;
//Connect to DB
mysql_connect("xxxxxx.com", "xxxxxxxxxx", "xxxxxxxxxxxx") or die(mysql_error());
mysql_select_db("xxxxxxxxxxx") or die(mysql_error());
//Get today's date
$todayis = date("Y-m-d");
$todayis = strtotime(date("Y-m-d", strtotime($todayis)) . " -4 hours");
$todayis = date('Y-m-d', $todayis);
//Delete rows in userContests where reminder is less than or equal to today's date
mysql_query("DELETE FROM userContests WHERE reminder <= '$todayis';") or die(mysql_error());
?>
有人可以向我解释为什么行不会删除吗?
答案 0 :(得分:1)
如果这是整个脚本,我会说你忘记了连接到数据库。
修改:这似乎是问题所在:
if (!$isCLI)
die("cannot run! sapi_name is ".php_sapi_name());
exit;
转换为:
if (!$isCLI)
{
die("cannot run! sapi_name is ".php_sapi_name());
}
exit;
所以基本上你总是在第6行停止你的脚本,之后什么都不会执行。
答案 1 :(得分:0)
如果是CRON作业,则应使用PHP-CLI
而不是PHP-CGI
。您可以将其添加到文件的顶部以进行正确的检查。
<?php if(PHP_SAPI != 'cli') throw new Exception('Not in CLI mode!');
...