[gelöst] eine Node minutengenau getimed online stellen
Eingetragen von Alpenmaid (145)
am 22.08.2019 - 14:00 Uhr in
am 22.08.2019 - 14:00 Uhr in
Hiho,
ich muss eine Node minutengenau von unpublished auf published stellen können.
Das Scheduler Modul ist, soweit ich das gesehen habe, ja abhängig vom Cron Job. Also auch wenn der Scheduler es auf published gestellt hat zur richtigen Zeit, wird es nicht veröffentlicht, wenn nicht direkt dann der Cron Job läuft.
Wie kann ich das also lösen?
Habe ich einen Denkfehler?
Gibt es bessere Module / Techniken dafür?
Ich wäre über jede Anregung dankbar.
LG
Alpenmaid
- Anmelden oder Registrieren um Kommentare zu schreiben
Das kann aber nicht anders
am 22.08.2019 - 14:30 Uhr
Das kann aber nicht anders funktionieren! Drupal auf dem Server wartet auf eine Kontaktaufnahme. Erst in diesem Moment kann etwas passieren. Wie soll also dazwischen ein Node veröffentlicht werden?
Das einzige was mir dazu einfällt wäre ein eigenes Modul, das über eine spezielle URL (geht mit hook_menu) angesprochen werden kann. Über die URL müssen dann eine Berechtigung und die Node-ID übergeben werden.
Das Modul wertet die Berechtigung aus und schaltet dann die Node frei. Diese spezielle URL muß dann über einen Cron-Job, der speziell dafür aufgesetzt wird, zur gewünschten Minute aufgerufen werden.
Einfacher wäre es, wenn die Freigabe nur in 30 Minuten Abständen passierte und Du den normalen Cron alle 30 Minuten laufen läßt.
.
Werner
drupal-training.de
Moderator und Drupal Trainer
* - - - - - - - - - - - - - - - - - - - - - - - - - - - *
Wie kann ich denn einstellen,
am 22.08.2019 - 14:56 Uhr
Wie kann ich denn einstellen, dass er alle 30 min laufen soll? Bei mir geht es nur alle Stunde als niedrigster Wert.
Und wie genau läuft er denn dann? immer 60 bzw. 30 min seit dem letzten Run?
Wäre es nicht viel sinniger, wenn der Scheduler quasi den Cron Job auslöst, wenn eine Node auf published gestellt wird. Bzw eben die eingestellten Zeiten als Con Job Abarbeitungs-Liste erhalten würde?
Oder kann ich das irgendwie beeinflussen, wenn ich diesen Content-type mit max-cache 0 einstelle?
Es muss doch schonmal jemand anders sowas benötigt haben. Bei Ticketverkäufen etc.
Na ja dann führst du einfach
am 22.08.2019 - 17:57 Uhr
Na ja dann führst du einfach jede Minute eine Cron-Job für Scheduler aus und das Problem ist gelöst. Das ist zwar icht besonders resourcenschonend, oder effizient, aber durchaus eine Lösung.
https://drupal-tv.de
Drupal sehen und lernen
Du müsstest den Drupal Cron
am 22.08.2019 - 21:19 Uhr
Du müsstest den Drupal Cron extern serverseitig via URL aufrufen. Den URL findest du unter: /admin/config/system/cron
Dafür könntest du dir auf deinem Server einen eigenen Cron Job anlegen, der den Drupal Cron zu einer bestimmten Zeit auslöst.
Stichwort ist hier crontab. Zum Beispiel jeden Montag und Mittwoch um 09.30 Uhr:
30 09 * * 1,3 curl https://deine-domain.de/cron/obIChbAinNODJwZIU5TLXnnjusllosDD
Es genügt doch,
am 23.08.2019 - 07:37 Uhr
wenn das Online stellen beim nächsten Aufruf stattfindet.
Der Erste, der die Seite nach dem Aktivierungszeitpunkt aufruft, bekommt die aktuelle Information.
Wenn niemand rein schaut, braucht es auch nicht sichtbar sein.
Dafür muss der Inhalt nicht zwangsweise nicht aktiviert sein. Ich habe ähnliches anders gelöst:
Der Inhalt wird vom Autor veröffentlicht, aber nirgens verlinkt.
Dass noch nicht aktueller Inhalt zufällig gefunden wird, ist eher unwahrscheinlich, außer die Veröffentlichung findet so früh statt, dass Google sie vorher finden kann.
Eine View selektiert dann nach Datum. Der Inhalt ist also nur über diese View zu finden.
Das ist die einfachste Lösung, die keinerlei Cronjobs erfordert.
Kombiniert mit Cronjobs lässt sich dies vom Cronjob grob erledigen, und per View im Feinen.
Grüße
Ronald
Danke für euch ganzen
am 23.08.2019 - 08:11 Uhr
Danke für euch ganzen Anregungen.
Ich habe es jetzt tatsächlich erstmal so gelöst, dass ich über den Server CronJob die Drupal Cron URL mit Key aufrufe und zwar stündlich zur Minute 0, da die Termine eigentlich immer nur zur vollen Stunde online gehen. Zur Sicherheit trage ich bei den Nodes xx:59 als Zeit ein. Das klappt im Test sehr gut soweit.
Nochmal danke.
Das ist eine gute Lösung. Wir
am 24.08.2019 - 13:48 Uhr
Das ist eine gute Lösung.
Wir haben die gleiche Herausforderung mit Ultimate Cron gelöst. Abgesehen von vielen anderen Vorteilen bei Nutzung des Moduls kann ein bestimmter Cron individuell mit Drush aufgerufen werden.
So läuft unserer generelle Cron nur alle halbe Stunde, jedoch triggern wir den Cron vom Scheduler Modul zusätzlich jede Minute.
* * * * * drush cron-run scheduler_cron
Oder wenn es Artikel nur während des Tages veröffentlicht werden, wie bei mancher Zeitung, dann
* 6-22 * * * drush cron-run scheduler_cron
Hier wird der Scheduler Cron jede Minute zwischen 06:00 und 22:00 aufgerufen.
Wenn euer Test erfolgreich war, würde ich wahrscheinlich aber auch nichts ändern, da Ultimate Cron das setup schon etwas aufwändiger macht.