- letölthető script
- drupal gyors tippek
- batch
- ajax
Egy újabb Drupal gyrostipp következik.
Amikor bekapcsolunk egy új nyelvet, vagy verziófrissítés utána, amikor meglátogatjuk az update.php-t, azt láthatjuk, hogy megjelenik egy teljes képernyős AJAX-os állapotjelző sáv, un. „progress bar”. Azért hasznos ez az AJAX-os megoldás, mert ha a feladatok elvégzése 30 másodpercnél tovább tartana, a php szkript futása megszakadhat, és a feladatok elvégzése félúton megállna. Így viszont a Drupal gondoskodik, hogy néhány másodperc futás utána, a háttérben, egy új http lekérés indul, ezzel kiküszöbölve a 30 másodperces kolátot.
Most mogmutatom, hogyan tudunk mi is ilyet készíteni. Drupal-al ez is nagyon egyszerű:
A funkció lelke a Drupal magban a batch.inc-ben van elrejtve, és nekünk mindössze egyetlen függvényt, a batch_set()-et, és annak paraméterezését kell ismernünk. Ez a függvény egyetlen paramétert vár, egy tömböt. A tömbben meg lehet adni a feladatlista nevét, az elvégzendő feladatokat, amelyek php callback függvények és paramétereik, illetve a befejezéskor meghívandó callback függvény.
A példakód ilyen egyszerű:
<?php
$batch = array(
'title' => t('Helló batch feladatok'), // a feladatlista címe
'operations' => array(), // feladatok tömbje
'finished' => 'hellobatch_finished', // befejezéskor meghívandó
);
for ($i=0; $i<$form_state['values']['jobs']; $i++) {
$operation = array(
'hellobatch_job', // egy feladat callback fg.
array($i), // és paraméterei
);
$batch['operations'][] = $operation;
}
batch_set($batch);
?>
Ha mindezt egy form_submit függvényben hívjuk meg, nem is kell mást tennünk, azonnal elindul a feladatok elvégzése. Ha form submit-on kívűl akarjuk használni, akkor még a batch_process() függvényre lesz szükségünk.
További infó angulul az API oldalon.
A példamodul kódját csatolttam, próbáljátok ki!
Csatolmány | Méret |
---|---|
hellobatch.zip | 1.11 KB |
7 hozzászólás
Helyesen: Ajaxszal,
Beküldte slink -
Helyesen: Ajaxszal, AJAX-szal, Drupallal.
kösz
Beküldte EdgarPE -
kösz
Nagyon hasznos volt a
Beküldte LaciApu -
Nagyon hasznos volt a leírásod. A segítségével sikerült több mint 400 html fájlban tárolt táblázat adatait adatbázisba áttölteni. Köszönöm.
Batch API-val való
Beküldte CSÉCSY László -
Batch API-val való ismerkedésemkor felmerült problémákról a céges blogomon.