【问题标题】:CRON isn't workingCRON 不工作
【发布时间】:2014-10-25 01:49:37
【问题描述】:

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

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

【问题讨论】:

  • crontab -l 对这份工作有什么看法?
  • 为什么不使用 MySQL 的event scheduler
  • @ccKep 我不知道你在引用什么。我的主机不允许我访问任何类型的 cron 管理。我只能告诉它使用什么文件,没有别的。
  • @eggyal 我不知道事件调度程序是什么或如何使用它。
  • @Jonathan:真的吗?哇。 CREATE EVENT foo ON SCHEDULE EVERY 1 DAY STARTS CURDATE() DO DELETE FROM userContests WHERE reminder &lt;= CURDATE()。如果这需要 5 分钟来学习手册,我会感到惊讶。

标签: php cron


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

【讨论】:

  • 我没有。显然,我不会在此处粘贴此类信息。
  • @Jonathan 发布整个脚本以帮助我们排除故障会很有帮助,用户名和密码类似于xxx。不管怎样,看看我的编辑。
  • 我已经发布了整个脚本。话虽如此,当它死亡时,它会输出“无法运行”的短语。事实是,这样的输出没有传递,因此它不会死,这意味着脚本正在执行。告诉我你发现了什么!
  • @Jonathan dieexit 是相同的,所以只需删除 exit 语句,因为现在您有 2 个 die 语句,一个在 if 条件中,一个在它之后。
【解决方案2】:

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

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

...

【讨论】:

  • @Jonathan,任何 CLI 任务(包括 CRON)都应该使用 PHP-CLI。通过使用$ php scriptname.php 直接从命令行调用脚本进行测试
  • 我没有命令行界面。我只能选择一个与 cron 一起使用的文件。我没有选项,没有命令行,没有设置。
  • @Jonathan,啊,那么您一定在使用某种充当虚拟 CRON 的管理面板。解释您遇到的所有问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-22
  • 2012-02-18
  • 2018-12-21
  • 1970-01-01
相关资源
最近更新 更多