任務隊列怎么使用
自定義函數(shù)是
function my_cron_dingshi($params) {
$data = array(
'uid' => $params['code1'],
'title' => $params['code2'],
'inputtime' => SYS_TIME
);
$rt = \Phpcmf\Service::M()->db->table('1_form_test')->insert($data);
if($rt){
return dr_return_data(1, 'ok');
}else{
return dr_return_data(0, '失敗原因');
}
}定義了一個控制器
public function test() {
// 寫你的程序代碼
$rt = \Phpcmf\Service::M('cron')->add_cron(SITE_ID, "dingshi", [
'code1' => '參數(shù)1',
'code2' => '參數(shù)2',
'code3' => '參數(shù)3',
]);
print_r($rt);
}手動訪問控制器的結果
Array ( [code] => 118 [msg] => [data] => Array ( ) )
后臺中任務隊列中沒有看到添加的任務,但是發(fā)現(xiàn)表中插入了數(shù)據(jù)
執(zhí)行成功的任務會刪除記錄的,所以你看不到記錄
那怎么加入隊列
文檔上應該就是說添加add_cron的那個函數(shù)
回復@平平
發(fā)現(xiàn)表中插入了數(shù)據(jù),說明這個任務已經(jīng)執(zhí)行成功啦,說明你成功了
我可能沒說清楚,是1_form_test表插入數(shù)據(jù)
但應該是先把任務插入到任務隊列,然后到點再執(zhí)行任務吧
我這里是都沒插入到任務隊列,任務就直接執(zhí)行了
回復@如來
1_form_test表插入數(shù)據(jù)說明你任務已經(jīng)成功了
流程是:
先把任務插入到任務隊列
分支1:然后系統(tǒng)就自動執(zhí)行任務,執(zhí)行完畢,入庫formtest表記錄,刪除任務隊列記錄
分支2:如果沒有設置自動任務代碼,就會先入庫到任務對列表,然后手動去點執(zhí)行,點了執(zhí)行成功,刪除本條任務記錄
作者之前推薦使用cron.php
我現(xiàn)在的問題是怎么插入到任務隊列
看文檔是寫那個add_cron的函數(shù)就行了
但是我執(zhí)行那個函數(shù)就直接入庫formtest表了
回復@易學習
怎么用呢
回復@胡金海
這個id 118就是任務隊列的記錄id號,應該你已經(jīng)執(zhí)行成功了,系統(tǒng)就刪除了118的記錄,你就看不到,學習哥分析的好
function my_cron_dingshi($params) { $data = array( 'uid' => $params['code1'], 'title' => $params['code2'], 'inputtime' => SYS_TIME ); $rt = \Phpcmf\Service::M()->db->table('1_form_test')->insert($data); if($rt){ return dr_return_data(0, '數(shù)據(jù)插入成功了,我只看看是否在任務隊列里面'); }else{ return dr_return_data(0, '失敗原因'); } }你把參數(shù)改成0,故意讓他失敗,你就可以在任務隊列里面看到了,
因為你都執(zhí)行成功了,cms會自動刪除記錄的
現(xiàn)在是執(zhí)行這個函數(shù)
public function test() { // 寫你的程序代碼 $rt = \Phpcmf\Service::M('cron')->add_cron(SITE_ID, "dingshi", [ 'code1' => '參數(shù)1', 'code2' => '參數(shù)2', 'code3' => '參數(shù)3', ]); print_r($rt); }就直接執(zhí)行了這個函數(shù)
function my_cron_dingshi($params) { $data = array( 'uid' => $params['code1'], 'title' => $params['code2'], 'inputtime' => SYS_TIME ); $rt = \Phpcmf\Service::M()->db->table('1_form_test')->insert($data); if($rt){ return dr_return_data(1, 'ok'); }else{ return dr_return_data(0, '失敗原因'); } }按您的參數(shù)改成0,確實看到在隊列里了。但是這樣我直接執(zhí)行my_cron_dingshi就行了啊
任務隊列不就是為了先準備幾個任務,然后到時間訪問/index.php?s=api&c=run作為定時任務嗎
回復@易學習
那可能是創(chuàng)始人技術大神的程序有bug,我發(fā)郵件問問創(chuàng)始人大哥
好的謝謝
那請問一下,定時任務,您們都是怎么處理的?
回復@易學習
我習慣用的這個方法
參考文檔:《自定義任務Cron.php》
定時我都寫進bt面板里面