如何创建一个cron作业,在30天后重置数据库中的值?

时间:2015-09-03 10:59:54

标签: php codeigniter cron

我正在使用PHP Codeigniter

我有桌面用户,其字段平衡日期类型为 ENUM('是','否')。我还有一个名为reset_date的字段,用于存储用户余额设置为yes的日期。所以我想要计算30天,30天后想要再次将用户余额重置为。因此,对于每个用户,如果他的余额用户设置为是,那么我想计算30天并在30天后重置余额。

我将当Balance设置为yes时存储当前日期:

if($this->input->post('balance') === "Yes") 
        {

                $key= $this->session->userdata('key');
                $this->reseller_m->deduct($key);/// pass youe id here

                $this->load->helper('date');
                $this->db->set('reset_date',unix_to_human(now()));   
                $this->db->where('id',$id);
                $this->db->update('users', $data);

        }

1 个答案:

答案 0 :(得分:1)

替代解决方案:

您可以在没有cron作业的情况下执行此操作:只需使用名为balance_timestamp的列,该列是字段设置为yes时的时间戳。如果没有设置(null),则表示没有。

现在,只需拨打SELECT .. WHERE balance="Yes",而不是SELECT .. WHERE balance_timestamp>NOW()-30,即可返回过去30天内设为是的所有项目

或者,您可以调用字段balance_validuntil并将其设置为NOW()+30。这样可以更轻松地选择:SELECT .. WHERE balance_validuntil>=NOW()

这是用于编写的代码

if($this->input->post('balance') === "Yes") 
        {

                $key= $this->session->userdata('key');
                $this->reseller_m->deduct($key);/// pass youe id here

                $this->load->helper('date');
                $this->db->set('balance_validuntil',unix_to_human(now()+30));   
                $this->db->where('id',$id);
                $this->db->update('users', $data);
        }
}

选择

$this->db->select('*');
$this->db->where('balance_validuntil >=', unix_to_human(now()));