【问题标题】:Update table row every minute using with Cron Job使用 Cron Job 每分钟更新表行
【发布时间】:2013-08-11 03:01:59
【问题描述】:

当 crondate(timestamp field) 和当前时间戳匹配时,我试图每分钟更新一次表行。当两者都匹配时,我设置 state = 0 但不工作。我检查了 cronjob,它每分钟都在工作和执行。

如果有人可以帮助我,我将不胜感激。

我的代码:

function runCronJob(){  
    $timestamp = date('Y-m-d H:i:s');

    $db =& JFactory::getDBO();
    $update_query = "UPDATE #__cronjob_run SET state=0 WHERE crondate = '$timestamp'";
    $db->setQuery($update_query);
    $db->query();

}

【问题讨论】:

  • 这真的是表名吗? #__cronjob_runcrondate = NOW() 会更有效
  • @Dagon 在 Joomla 中,我们必须用#__cronjob_run 编写表名。
  • 你确定你的日期格式在 where 子句的两边都匹配吗?这是头痛的常见来源。不确定您在这里使用的是什么 DBms。
  • 这看起来也需要匹配到第二个。尝试在执行后将 $update_queries 的内容记录到文件中,看看它实际上在做什么。
  • 检查 MySQL 服务器、运行 PHP 代码的服务器以及 php.ini 文件中的时区是否与 TIMESTAMP 字段具有相同的时区。

标签: php mysql joomla cron


【解决方案1】:

我不确定你为什么需要比较日期,所以我假设你想更新创建那一秒的行。

我相信您使用MySql Events 会更容易,因为您不必担心时区,因为它是相同的时间,而且基本上它自己运行一个 cron 并且您有基本相同的选项。

另一个优点是运行起来会更快,因为不需要运行 PHP。

因为我看到你在使用 PHPMyAdmin,所以转到你的数据库 -> 事件 -> 添加事件,然后从那里开始就很简单了。

这将使您的查询类似于:

UPDATE #__cronjob_run SET state=0 WHERE crondate = now()

【讨论】:

    猜你喜欢
    • 2015-10-01
    • 2013-10-14
    • 2014-04-06
    • 2015-10-16
    • 2021-09-03
    • 1970-01-01
    • 2014-08-07
    • 2013-08-04
    • 1970-01-01
    相关资源
    最近更新 更多