Frage zur Batch finished-Funktion (feeds_batch)

am 26.02.2013 - 12:14 Uhr in
Ich habe ein kleines Modul geschrieben mit einem Cron-Hook für einen Feeds-Import.
Der Cron wird über Elysia Cron konfiguriert und gestartet.
Hier ist eine Zusammenfassung des Codes:
function feedsimport_cron() {
foreach (irgendwas)
{
$feed = "mein-importer-name-in-dieser-schleife";
$filename = "mein-importer-file-name-in-dieser-schleife";
$title= "mein-importer-titel-in-dieser-schleife";
$feedSource = feeds_source($feed);
$config = $feedSource->getConfig();
$config['FeedsFileFetcher']['source'] = $filename;
$feedSource->setConfig($config);
$feedSource->save();
$batch = array(
'title' => t('Importing feeds '.$title),
'init_message' => t($title.' Batch is starting.'),
'operations' => array(
array('feeds_batch', array('import', $feed, 0)),
),
'progress_message' => t('Processed @current out of @total.'),
'error_message' => t('Batch has encountered an error.'),
'finished' => 'batch_example_finished',
);
batch_set($batch);
}
batch_process('my-redirect-url');
}
function batch_example_finished($success, $results, $operations) {
if ($success) {
// Here we do something meaningful with the results.
//Je nach Feed-Operation soll hier was bestimmtes getan werden, aber wo bekomme ich die Info her?
$message = format_plural(count($results), 'One item processed.', count($results).' item processed.');
drupal_set_message($message);
}
else {
// An error occurred.
// $operations contains the operations that remained unprocessed.
$error_operation = reset($operations);
$message = t('An error occurred while processing %error_operation with arguments: @arguments', array('%error_operation' => $error_operation[0], '@arguments' => print_r($error_operation[1], TRUE)));
drupal_set_message($message, 'error');
}
}
Der Batch läuft tadellos durch und die Variable $success in der Funktion batch_example_finished wird danach auf True gesetzt.
Wenn die Schleife oben drei Batch-Operationen generiert, dann bekomme ich unten drei Messages aus dieser Funktion.
Die Message lautet jeweils 0 item processed
, obwohl beim Import-Vorgang z.B. 20 Inserts und 50 Updates korrekt durchgeführt wurden.
Mein Problem: Die Variablen $results und $operations sind leere Arrays.
Ich möchte aber abhängig davon, welcher Batch gerade erfolgreich gelaufen ist, noch eine Datenbankmanipulation in dieser Schleife vornehmen.
In allen API-Beispielen wird davon ausgegangen, daß in der Variablen $results die Anzahl der Items gespeichert wird.
Und ich hatte gehofft, daß ich aus der Variablen $operations den Namen des so eben erfolgreich abgearbeiteten Feeds-Importers rauslesen kann.
D.h. ich habe zwei Fragen:
1. Erkennt jemand, warum die Arrays leer sind?
2. Gibt es eine Alternative, wie ich durch einen zusätzlichen Parameter den Namen des Feeds in die finished-Funktion transportieren kann?
- Anmelden oder Registrieren um Kommentare zu schreiben
Neue Kommentare
vor 17 Stunden 45 Minuten
vor 1 Tag 4 Stunden
vor 1 Tag 7 Stunden
vor 1 Tag 11 Stunden
vor 1 Tag 17 Stunden
vor 2 Tagen 8 Stunden
vor 1 Woche 6 Tagen
vor 1 Woche 6 Tagen
vor 1 Woche 6 Tagen
vor 2 Wochen 15 Stunden