Php Cron作业在5天后更新行

Php Cron作业在5天后更新行,php,mysql,sql,cron,Php,Mysql,Sql,Cron,如果帐户已经创建了5天,我很难在cpanel上执行cron作业来更新用户的状态。这根本不起作用。当我在cpanel上编程cron作业时,它什么也不做。我甚至用了几分钟的时间测试了它,但不起作用 这是我的数据库表: CREATE TABLE `users_tmp` ( `idUsers` int(11) NOT NULL, `ipUser` varbinary(16) NOT NULL, `uidUsers` longtext COLLATE utf8_unicode_ci NOT N

如果帐户已经创建了5天,我很难在cpanel上执行cron作业来更新用户的状态。这根本不起作用。当我在cpanel上编程cron作业时,它什么也不做。我甚至用了几分钟的时间测试了它,但不起作用

这是我的数据库表:

CREATE TABLE `users_tmp` (
  `idUsers` int(11) NOT NULL,
  `ipUser` varbinary(16) NOT NULL,
  `uidUsers` longtext COLLATE utf8_unicode_ci NOT NULL,
  `emailUsers` longtext COLLATE utf8_unicode_ci NOT NULL,
  `pwdUsers` longtext COLLATE utf8_unicode_ci NOT NULL,
  `dataUser` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `stateUser` longtext COLLATE utf8_unicode_ci NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

下面是我要更新的代码(update_row.php):


创建一个shell脚本并将其用于cron作业

根本不需要php

#!/bin/bash

mysql --user=[username] --password=[password] --database=[db name] --execute="UPDATE users_tmp SET stateUser = 'Inactive' WHERE timestamp < NOW() - INTERVAL 5 DAY;"
并创建如下事件:

CREATE EVENT name_of_event
ON SCHEDULE EVERY 1 DAY
STARTS '2020-04-19 00:00:00'
DO
UPDATE users_tmp SET stateUser = 'Inactive' WHERE timestamp < NOW() - INTERVAL 5 DAY;
创建事件的事件名称\u
按计划每1天
开始“2020-04-19 00:00:00”
做
更新用户\u tmp SET stateUser='Inactive',其中时间戳
如果我理解正确,您的sql查询已经在您的环境中运行,并且您希望在linux上创建一个cron作业来调用您的PHP页面

如果上述场景正确,则首先需要确保在cron_script.php文件中执行sql脚本,如下所示:

<?php
require 'dbh.inc.php';    
// Let's assume that you have an active connection to your database by now
$sql = "UPDATE users_tmp SET stateUser = 'Inactive' WHERE timestamp < NOW() - INTERVAL 5 DAY";
if (mysqli_query($conn, $sql)) {
    // createCronLog is an optional function that you can create and use to make a log of what has happened on your cron activity!
    createCronLog("Record updated successfully");
} else {
    createCronLog("Error updating record: " . mysqli_error($conn));
}
mysqli_close($conn);
?>  
下面是cron作业命令和活动调用,每小时一次

0   *   *   *   *  /usr/local/bin/php /home/yourusername/path/to/cron/cron_script.php
如果您的文件具有$\u GET或$\u POST变量等依赖项,您可以将cron\u script.php文件放在公共html文件夹中的某个位置,并使用完整路径(带域)调用您的cron文件,以便crob调用您的脚本:

0   *   *   *   *  /usr/local/bin/php https://yourdomain.tld/path/to/cron/cron_script.php
我已经测试了以上内容,并且它可以在运行cPanel的centos 7上的linux环境中使用。但是,只要cron作业正确执行并调用cron_script.php文件,它也必须在任何设置环境下工作

附言:
请注意,
“/usr/local/bin/php”
“/home/yourusername/path/to/cron/cron_script.php”之间有一个空格。显示cron作业。创建帐户时,您具体存储在哪里?
dataUser
列?那么,您不应该在查询中使用它吗?MySQL有自己的内置函数。此任务的外部计划程序使用量过多且不合逻辑。
/usr/local/bin/php /home/yourusername/path/to/cron/cron_script.php
0   *   *   *   *  /usr/local/bin/php /home/yourusername/path/to/cron/cron_script.php
0   *   *   *   *  /usr/local/bin/php https://yourdomain.tld/path/to/cron/cron_script.php