2011-11-18 3 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의 출처를 변경해야 할 것 귀하의 필요에 맞게 :)