Feeds-Import mit cron-Hook via Konsole - Authentifizierung?
am 20.03.2013 - 09:45 Uhr in
Ich habe Feeds, die ich automatisch mit einem eigenen Modul via Cron ausführen lasse.
Rufe ich den Cron aus der Webseite auf, funktioniert das prima.
Ich verwende Elysia-Cron und der Feeds-Import-Hook läuft auch bei einem Aufruf aus Elysia raus fehlerfrei.
Ziel ist allerdings, den Cron über einen cron-Job 1x nachts laufen zu lassen.
Führe ich den Cron via Konsole aus, steht ein Fehler im Protokoll, allerdings nur mit diesem Hook, alle anderen Cron-Aufgaben werden gelöst.
Unexpected termination of cron channel default, aborted. Last job executed: feedsimport_cron
Zuerst habe ich ein Timeout-Problem vermutet, aber das schließe ich aus, weil der Fehler beim Testen auch mit einem winzigen Feed passiert (20 Nodes).
Außerdem müßte das Problem dann ja auch auf der Webseite auftreten.
Das Problem hängt eindeutig mit dem Batch-Aufruf zusammen:
batch_set($batch);
Kommentiere ich diese Zeile im Modul aus, dann läuft der Cron fehlerfrei (passiert halt nichts).
Ich vermute ein Rechteproblem, weil nur angemeldete User den Feeds-Import ausführen dürfen.
Nur wie beseitige ich das unter Drupal 7?
Die Vorschläge hier:
http://drupal.org/node/23714
habe ich alle durchgesehen und die diversen Script wie drupal.sh und drupal-lynx.sh getestet.
Den Aufruf habe ich jeweils mit cron.php?cron_key=MYKEY gemacht.
Auf der Seite steht ja auch ausdrücklich, daß der Workarround von http://drupal.org/node/479948#comment-1673488 nur unter Drupal 6 läuft.
Note that as of Drupal 7, cron always runs as an anonymous user, so this will not work in Drupal 7 and later versions!
OK, also sollte ich wohl im Hook sagen, daß der Batch unter Administrator-Rechten laufen soll.
Nur, wie mache ich das?
Ich finde nichts in der API dazu.
- Anmelden oder Registrieren um Kommentare zu schreiben
schon mal Drush probiert?
am 20.03.2013 - 10:18 Uhr
Drush hat vor allem auch den Vorteil mit besseren PHP-Limits laufen zu können bezüglich Memory und Execution time, die man aber dem Browser-Nutzern nicht zu gestehen kann.
Elysia hat auch einen Drsuh support. Wenn ein Webspace SSH-Zugang bietet bekomme ich meistens auch Drush zum laufen. Du hast ja offensichtlich einen Terminal-zugang.
Das mit Drush ist aber ehrlich gesagt auch immer eine kleine Bastelei bei den Providern meiner Kunden. Auf meinen eigenen Servern ist Drush allerdings standard. Drupal macht mir ohne Drush auch nur halb soviel Spaß.
# DrupalCenter-Moderator # https://www.drupal.org/u/c-logemann
# CTO der Nodegard GmbH: Tech. Concepts | Security + Availability Operations / Wir unterstützen IT-Abteilungen, Agenturen, Freiberufler:innen
Danke Carsten für die
am 20.03.2013 - 10:32 Uhr
Danke Carsten für die Drush-Motivation.
Das ist einiges der wenigen Themen, wo ich mich noch nicht mit beschäftigt habe bei Drupal.
Kann ich da dann auch Userrechte dediziert für Scripte vergeben?
Naja, ich gucks mir am Besten einfach mal an... brauchst mir nicht alles vorzukauen ;-)
LG Regina Oswald
-------------------------
Montviso - Internetdienstleistungen
http://www.montviso.de
Nun habe ich Drush
am 24.03.2013 - 18:47 Uhr
Nun habe ich Drush eingerichtet und mich auch schon an verschiedenen Dingen erfreut, wie z.B. an einem vollautomatisches Update auf der Testumgebung.
Soweit wunderbar.
Nur konnte ich mein Problem leider noch nicht lösen.
Ich habe folgendes getestet:
Das hier funktioniert einwandfrei. Es werden normale News-Feeds importiert.
meinekonsole:~/mein-pfad-zu-drush/drush/drush --debug -r /mein-pfad-zu-drupal elysia-cron run [feeds_import]
Das hier soll der Aufruf von meinem Cron-Modul sein:
meinekonsole:~/mein-pfad-zu-drush/drush/drush --debug -r /mein-pfad-zu-drupal elysia-cron run [feedsimport_cron]
Wenn ich den Aufruf batch_process('myredirect-url') auskommentiere, dann läuft der Cron durch.
Wenn ich ihn nicht auskommentiere, erscheint die Fehlermeldung:
Drush command terminated abnormally due to an unrecoverable error
Ich habe wieder nur den Feed mit einer handvoll Nodes importieren lassen, um einen Timeout auszuschließen.
Nun frage ich mich also wieder, ob es an mangelnden User-Rechten scheitert?
Ich bin mit meinen Recherchen nicht weiter gekommen.
Weder habe ich etwas gefunden, wie ich das Modul mit dem cron-hook dazu bringen könnte, als Admin zu laufen.
Noch wie man per drush den Aufruf des Crons unter einem bestimmten User erzwingen könnte.
Eine Idee, wo ich als nächstes hinlangen muß?
LG Regina Oswald
-------------------------
Montviso - Internetdienstleistungen
http://www.montviso.de
Hier wären zwei Artikel für
am 24.03.2013 - 20:18 Uhr
Hier wären zwei Artikel für Dich, vielleicht hilft's ja weiter
http://drupal.org/node/1883988
http://atendesigngroup.com/blog/batch-api-cron-queues
persönlich habe ich allerdings keine Erfahrung damit - hat mich jetzt nur interessiert.
Don't code today what you can't debug tomorrow
Ariya Hidayat
Hi oteno, beim ersten Link
am 25.03.2013 - 07:08 Uhr
Hi oteno,
beim ersten Link hätte ich noch gesagt, das betrifft mich nicht, weil Queues ja in erster Linie gedacht sind, Probleme mit großen Datenmengen zu vermeiden.
Und bei mir passiert es ja auch bei einem Import mit 20 Nodes.
Dem zweiten Link entnehme ich allerdings, daß Probleme mit Batch und Cron eher häufiger auftreten.
Nun, dann werde ich mich also mal in Queues vertiefen...
Danke!
LG Regina Oswald
-------------------------
Montviso - Internetdienstleistungen
http://www.montviso.de