0

我将以下 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());
?>

有人可以向我解释为什么这些行不会删除吗?

4

2 回答 2

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 行停止你的脚本,之后什么都不会被执行。

于 2012-05-08T00:56:25.437 回答
0

如果是 CRON 作业,则应该使用PHP-CLInot PHP-CGI。您可以将其添加到文件顶部以进行正确检查。

<?php if(PHP_SAPI != 'cli') throw new Exception('Not in CLI mode!');

...
于 2012-05-08T00:56:53.623 回答