繁体   English   中英

如何每天使用Cron Jobs将行插入数据库中?

[英]How can I insert rows into my DB daily using Cron Jobs?

我有这个Cron Job,我想每天运行一次。 它检查是否是新的一天,如果是新的一天,它将在我的数据库表中插入新的一行。 我用它来跟踪在线商店中每个商品的每日销售额。

  • 我还需要它从该product_id的最后一行获取day ,将其递增1,然后将其包含在我的INSERT查询中。 这样一来,我可以轻松跟踪每种产品的当天。

  • MAX(time_stamp)也是非法代码,但是我不知道用什么替换它。 我用它来选择每个项目的最新日期,以使Cron Job不会选择每一行。

我以前从未使用过Cron Jobs,这意味着我是一个菜鸟,所以请对我放心:)

谢谢您的帮助! :)

这是我的代码:

PHP:

// Checks if past a day
$days = DB::fetch("SELECT * FROM `daily_sales` WHERE MAX(time_stamp)<=CURRENT_DATE - INTERVAL 1 DAY;");
$numrows = count($days);

// If there is a new day
if ($numrows > 0) {
    foreach ($days as $i => $day) {
        // Adds a fresh day with 0 sales
        $sales = 0;
        $product_id = $day->product_id;
        $day = // Get the day from the last row, and add 1
        $time_stamp = time();
        DB::query('INSERT INTO `daily_sales` (`product_id`, `sales`, `day`, `time_stamp`) VALUES (?, ?, ?, ?);', array($product_id, $sales, $day, $time_stamp));
    }
}

daily_sales :(数据库表)

id | product_id | day | time_stamp | sales

您必须打开cron作业,添加新作业并定义

如何打开cron选项卡

crontab -e

将以下内容添加到您的cron标签中

0 0 * * * php /full/path/to/script.php

要么

您可以使用mysql触发器http://www.mysqltutorial.org/mysql-triggers.aspx ,该触发器可让您制作包含每日销售额的“审核”表。 因此,您可以使用“插入后”来插入/更新审核表。

希望这会有所帮助

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM