2015-09-03 46 views
0

我使用PHP笨如何創建30天后重置數據庫中的值的cron作業?

我其中有一個領域平衡datetype表用戶是ENUM(「是」,「否」)。我還有一個名爲reset_date的字段,用於存儲用戶餘額設置爲yes的日期。所以我想數30天,30天之後要重新設置用戶餘額爲。因此,如果每個用戶的平衡用戶設置爲「是」,那麼我想要計數30天,並在30天后重置餘額。

我正在儲存時平衡被設置爲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

替代解決方案:

你可以做到這一點沒有一個cron作業:剛上列名爲balance_timestamp使用的是該字段設置爲yes的時間戳。如果沒有設置(null),則表示不是。現在

,而不是SELECT .. WHERE balance="Yes",只需撥打SELECT .. WHERE balance_timestamp>NOW()-30它返回了在過去30天設置爲yes

或者所有的項目,你可以打電話給你的領域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())); 
+0

可以請你寫下一個示例代碼給我嗎?我明白了。 – Rajan

+0

但30天后餘額將如何設置爲否? – Rajan

+0

我的意思是我想檢查每個用戶,如果他的重置日期超過30天我想設置餘額=沒有 – Rajan