2011-11-18 69 views

回答

2

是你可以通過他們通過對聲明批處理功能,並從那裏它們傳遞到每個操作:

function mymodule_myform_submit(&$form, &$form_state) { 
    $var1 = $form_state['values']['var1']; 
    $var2 = $form_state['values']['var2']; 
    batch_set(mymodule_mybatch($var1, $var2)); 
} 

function mymodule_mybatch($var1, $var2) { 
    $nid = db_result(db_query_range("SELECT nid FROM {node} ORDER BY nid ASC", 0, 1)); 

    $operations = array(); 
    for ($i = 0; $i < 100; $i++) { 
    $operations[] = array('mymodule_mybatch_op', array($nid, $var1, $var2)); 
    } 
    $batch = array(
    'operations' => $operations, 
    'finished' => 'mymodule_mybatch_finished', 
); 
    return $batch; 
} 

function mymodule_mybatch_op($nid, $var1, $var2) { 
    // Perform the operation 
} 

function mymodule_mybatch_finished($success, $results, $operations) { 
    if ($success) { 
    $message = count($results) . ' processed.'; 
    } 
    else { 
    $error_operation = reset($operations); 
    $message = 'An error occurred while processing ' . $error_operation[0] . ' with arguments :' . print_r($error_operation[0], TRUE); 
    } 
    drupal_set_message($message); 
} 

顯然你需要更改其中數據來自於mymodule_mybatch到適合您的需求:)