php - 1 小时后和 24 小时后更改状态

标签 php mysql cron

我已经安装了一个自动运行的 cron 作业。它检查数据库中的作业,一小时后应从私有(private)状态更改为公共(public)状态,24 小时后应从公共(public)状态更改为已过期。 cron 作业运行顺利,但以下代码没有带来预期的结果。数据库数据没有改变,当我自己运行它时,没有显示任何消息。

我怎样才能扭转它以实现这一目标?

我的代码:

      // Check and do something: private to public
      $now=date("Y-m-d H:i:s");
      $timeBefore=strtotime($now-3600);
      $check=mysqli_query($con,"SELECT * FROM ibirakas WHERE status='private' AND added<'$timeBefore'") or die(mysql_error());
      while($exe_check=mysqli_fetch_assoc($check)){
        $id=$exe_check['kiraka_id'];
        $query=mysql_query("UPDATE ibirakas SET status='public' WHERE id='$id'") or die(mysql_error());
        if($query==true){
          echo "CRON_1_DONE";
        } else {
          echo "CRON_1_FAIL";
        }
      }
      //check and do something: public to expired
      $now=date("Y-m-d H:i:s");
      $timeBefore=strtotime($now-86400);
      $check=mysqli_query($con,"SELECT * FROM ibirakas WHERE status='public' AND added<'$timeBefore'") or die(mysql_error());
      while($exe_check=mysqli_fetch_assoc($check)){
        $id=$exe_check['kiraka_id'];
        $query=mysql_query("UPDATE ibirakas SET status='expired' WHERE id='$id'") or die(mysql_error());
        if($query==true){
          echo "CRON_2_DONE";
        } else {
          echo "CRON_2_FAIL";
        }
      }

我已经包含了 connect.php 文件,而且我已经打开了 php 打开和关闭标签(这里没有包含) 您的帮助将不胜感激。谢谢

最佳答案

我认为您可以在没有那么多 PHP 的情况下更轻松地使用 MySQL 函数。有很多函数,例如 TIMEDIFF,因此您可以检查从 NOW() 到保存日期的差异是否大于 90 分钟。这是一个很好的问题,如何从您的差异中获取 session 记录。

Difference in minutes from two time fields in MySQL

那么您就不需要选择并更新所有行。您可以直接更新所有符合条件的行。

关于php - 1 小时后和 24 小时后更改状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47022139/

相关文章:

php - 在 php 中为 $_POST 刷新一次

php - 如何在 Homestead 上运行 Composer?

php - 打印页面后插入MySql数据

php - 修剪返回字段的一部分

mysql - 是否可以从 phpMyAdmin 导出选择性记录?

node.js - Mocha 测试中子进程的进度时间

bash - Crontab 不工作(已完成标准故障排除)

php - 如何从 PHP 中的字符串中删除所有非字母数字和非空格字符?

php - CURL php 代码返回 http_code=0 和来自服务器消息的空回复

Spring Cron Expression 每周二晚上 9 点运行?