我有一個名爲parser2的模塊,它可以從html頁面進行解析。一切工作完美,除了cron時間表。它只是不會將我的任務添加到cron任務中,而在日誌中,我發現每個cron都運行了0個計劃任務。下一個問題,如果我手動啓動cron幾次,在我遇到死亡白屏後,唯一能幫助我的東西,它從DB刪除parser2表,然後從system.table運行update.php 。 這是應該做的這一切工作的代碼,但我不能明白的地方是錯誤這裏在drupal的cron中計劃的任務執行問題
function parser_cron_queue_info() {
$info = array();
$info['get_parser_weather'] = array(
'worker callback' => 'parser_weather',
'time' => 10,
);
$query = db_select('parser_jobs', 'pn')
->fields('pn', array('id','time_run_in_crone'))
->condition('run_in_crone', 1)
->execute();
foreach ($query as $job){
$info['get_parser_weather_'.$job->id] = array(
'worker callback' => 'parser_weather',
'time' => $job->time_run_in_crone,
};
}
return $info;
}
function parser_cron() {
$query = db_select('parser_jobs', 'pn')
->fields('pn', array('id','time_run_in_crone'))
->condition('run_in_crone', 1)
->execute();
foreach ($query as $job){
$queue = DrupalQueue::get('get_parser_weather_'.$job->id);
$queue->createItem($job->id);
}
}
function parser_weather($job_id){
$job = parser_job_load($job_id);
_parser_url_delete_all();
_parser_url_add($job->start_url);
while (_parser_url_get_not_parsed())
{
parser_parse2($job);
};
}
也許可能有另一種方法來強制這個任務運行在cron運行? – Avdept 2012-08-10 06:38:32
看不到任何錯誤,你是否嘗試過用xdebug手動觸發代碼,或許使用指向cron函數的簡單菜單回調? – 2012-08-10 19:27:47
問題是,在日誌中有關於cron運行的消息,並且我在common.inc行中添加了以顯示我的模塊是否運行。所以它確實如此,但爲什麼模塊不能按照預期進行解析。更多的話,如果我試圖從drupal管理部分手動運行cron,幾次運行後即時獲取死亡白屏,並在apache日誌中的一些mysql錯誤。 – Avdept 2012-08-13 07:53:12