【问题标题】:MySQL table not updating through PHP cron job at specified timeMySQL 表未在指定时间通过 PHP cron 作业更新
【发布时间】:2017-10-02 03:34:56
【问题描述】:

我正在开发一个 Android 应用程序,它有一个 MySQL 数据库,其中包含一个表,其中包含每个用户的所有登录详细信息。在该表中,我有一个名为“状态”的列,该列最初为每个用户分配为 0。每天当用户登录到他的帐户并提交数据(点击提交按钮)时,状态变为 1。每晚 12 点,状态应重置为 0。另外,如果用户直到 10 点才提交数据上午一天,对于状态仍为 0 的特定用户,应自动将一行插入到 MySQL 表中,其列值为“无记录”。所以,我创建了一个 PHP 文件,该文件作为 cron 作业运行面板。 PHP 文件每小时检查一次时间。而当前时间是上午 12 点和上午 10 点,它应该进行所需的更改。但是我的 PHP 脚本没有得到所需的结果。脚本如下:

<?php

require "connection.php";


$get_time = "select date_format(NOW(), '%H:%i A') as current_daily_date from dual;";
$convert_time = mysqli_query($connect,$get_time);
$php_time = mysqli_fetch_assoc($convert_time);
$final_time = $php_time["current_daily_date"];


$dateTime = new DateTime('now', new DateTimeZone('Asia/Kolkata')); 
$d = $dateTime->format("H:i A ");
$e = $dateTime->format("d/m/y"); 
echo $d;

$s = '00:00';
$g = strtotime($s);
$p = date('H:i A',$g);
echo $p;

$c = '10:00';
$q = strtotime($c);
$r = date('H:i A',$q);
echo $r;

if($d == $p) {

        $run = "UPDATE login SET status = 0;";
        $connect->query($run);  
                echo "Status updated";

   }

else if($d == $r) {

     $second_run = "INSERT into attendance (name,date,attendance) VALUES ((SELECT name from login where status = 0 ), '$e' , 'No Records');";
     $connect->query($second_run);  
         echo "Marked as No Records";

 }

 else {

     echo "Not the correct time to change the status.";
 }

 $connect->close();

 ?>

我已经为 cron 作业设置了我的电子邮件,以便将输出发送到我的邮件中。但即使在上午 12 点,表格也没有更新。

输出是:

00:00 AM 00:00 AM10:00 AMNot the correct time to change the status.

我不知道我哪里出错了。任何人都可以检查并告诉我问题是什么?

【问题讨论】:

  • 抱歉,您没有使用 mysql 数据库的安卓应用。您有一个使用 mysql 数据库的 Web 应用程序。 android 应用可能会向其发出 http 请求。
  • 现在请简化问题。发布您的 crontab 和 cron 作业应该执行的脚本。网站上的用户交互无关紧要。
  • 我发布的脚本是应该执行的 cron 作业。
  • 太棒了。然后请编辑掉用户故事并在 crontab 中编辑
  • 我不明白你所说的关于编辑部分的内容。请你详细说明一下。

标签: php mysql cron


【解决方案1】:

INSERT SELECT 的格式不正确:

$second_run = "INSERT into attendance (name,date,attendance) SELECT name, ****, **** from login where status = 0";

您不需要 VALUES 位,我根本不确定结束段是什么。您还尝试插入 3 个值,同时只提供一个,我已将 **** 放在您需要放置其他值的位置。

如果您没有从中得到任何错误,您还应该在脚本中打开错误报告,因为这将是一个错误。

error_reporting(E_ALL);
ini_set('display_errors', 1);

【讨论】:

  • 实际上,我正在为其他 2 列插入带有“时间”和“无记录”的表值,这些值不是来自登录表。这就是我放置这些字段的原因。
  • 啊 - 抱歉,想清楚有点早,所以这些值应该在选择中。
猜你喜欢
  • 1970-01-01
  • 2016-05-27
  • 2011-02-14
  • 2020-02-28
  • 1970-01-01
  • 2013-08-31
  • 1970-01-01
  • 2015-09-24
  • 1970-01-01
相关资源
最近更新 更多