Hallo, Gast! (Registrieren)

Letzte Ankündigung: MyBB 1.8.38 veröffentlicht (30.04.24)


Benutzer, die gerade dieses Thema anschauen: 5 Gast/Gäste
Tasks von externem Cron-Job ausführen?
#1
Hallo!

Ich möchte den Task "Weekly Backup" von einem Cronjob ausführen lassen.
Mein Hoster bietet mir keine Cron-Jobs an. Deswegen würde ich gerne auf einen Dienst wie www.cron-job.org zurückgreifen.
In der offiziellen MyBB-Wiki habe ich unterHelp:Task System gelesen, dass man Cronjobs über den Befehl
Code:
php the/file/system/path/to/task.php x
ausführen soll, wobei x die ID des Tasks sein solle.
Nun gilt das aber ja nur für Cronjobs, die vom gleichen Server aus aufgerufen werden.

Wie bekomme ich das jetzt mit cron-job.org hin? Dort kann ich einfach nur eine URL angeben.

Gruß,
pcworld
#2
Warum führst du die Aufgabe nicht wie alle anderen auch vom MyBB-System aus? Dieser Dienst kann dir da nicht helfen.
[Bild: banner.png]

Bitte die Foren-Regeln beachten und im Profil die verwendete MyBB-Version angeben.
#3
Das Problem ist, dass es oft bei der manuellen Ausführung eine Weile dauert, bis das Backup fertig ist.
Und da ist es nicht unbedingt unwahrscheinlich, dass der Benutzer, dessen Seitenaufruf das Backup ausführen soll, den Ladevorgang abbricht. Smile

Gruß,
pcworld
#4
Ich denke nicht, dass der Besucher überhaupt etwas merkt...
[Bild: banner.png]

Bitte die Foren-Regeln beachten und im Profil die verwendete MyBB-Version angeben.
#5
(14.01.2010, 15:19)pcworld schrieb: Wie bekomme ich das jetzt mit cron-job.org hin? Dort kann ich einfach nur eine URL angeben.

Die URL ist deineseite/task.php, das alle paar Minuten laden lassen. Dann kannst du das taskimage aus dem Footer nehmen. Eine URL um einen ganz bestimmten Task laufen zu lassen gibt es nicht, das geht nur durch direkten Aufruf lokal.

Falls du dir das durch Codeänderungen dazu basteln willst, sollte dir vorher klar sein, dass ein von aussen anwerfbarer Backup-Task bedeutet, daß ein Angreifer deinen Webspace in kürzester Zeit vollmüllen und hohe Last erzeugen kann.

Allerdings ist in task.php schon ein ignore_user_abort(true); drin, d.h. deine Befürchtung daß da halbe Backups rauskommen wenn der User zur nächsten Seite geht, ist unbegründet, solange dein Host das ignore_user_abort() zulässt.

Wenn du halbe Backups hast, ist ein Timeout wahrscheinlicher. In dem Fall brauchst du ein Backup-Script, das den Job in mehreren Anläufen oder einfach besser als MyBB erledigen kann.
#6
Ich belasse es jetzt doch mit dem Backup über den Task-Manager, vor allem, weil ignore_user_abort(true) aktiv ist.
Für all diejenigen User, die es trotzdem über einen externen Cronjob laufen lassen wollen, ich habe euch eine modifizierte Version von /inc/tasks/backupdb.php angehängt.
Diese Datei ladet ihr in das Root-Verzeichnis von MyBB hoch.
Dann braucht ihr bei eurem externen Cronjob nur noch den Pfad zu backup_cronjob.php angeben.

Wie frostschutz allerdings schon erwähnt hat, kann man da euch ziemlich schnell euren Webspace zumüllen. Wenn ihr es sicherer machen wollt, könnt ihr das Script verändern, dass es nur ausgeführt wird, wenn als Parameter eine Art Passwort angehängt wird, z. B. backup_cronjob.php?pw=hierkommtniemandrein
Es wird auch nichts in den Task-Log geschrieben.
Das Script ist nur auf die schnelle gemacht und ich hafte für nichts! Da das Script eine modifizierte Version einer MyBB-Datei ist, steht es unter der GPL-Lizenz.

Und da ich schonmal am Bearbeiten war, habe ich gleich noch ein Script (Task) geschrieben, welches das erstellte Backup gleich noch per SMTP als Anhang an eine bestimmte E-Mail-Adresse sendet. Dafür muss auf dem Server keine Funktion wie passthru aktiviert sein, wie es hier der Fall ist.
Ich werde das Script bald veröffentlichen, dann poste ich hier nochmal.

Gruß,
pcworld


Angehängte Dateien
.php   backup_cronjob.php (Größe: 2,61 KB / Downloads: 11)
#7
Bevor ich es noch vergesse:
Hier der SMTP-Backup-Task: https://www.mybb.de/forum/thread-15500.html

Gruß,
pcworld
#8
Warum kann ich den Backup-Task nur von einem Cronjob ausführen?
Wenn ich ihn aktivieren will, kommt:
Zitat:WARNUNG: Du bist gerade dabei eine Aufgabe zu aktivieren, die nur von einem Cron-Job ausgeführt werden sollte (Bitte schaue bei der MyBB Doku für weitere Informationen). Fortsetzen?

Gruß,
pcworld
#9
Dann klicke einfach auf Ja.
#10
Je nach Größe der Datenbank kann es dauern, bis das Backup erstellt wurde. Das kann sich wiederum auf die Ladezeit der Seite auswirken, da die Tasks von Benutzern im Frontend ausgelöst werden. Das sollte nicht passieren, aber bei Backups ist es sicherer, wenn sie von einem richtigen Cronjob angestoßen werden.

Gruß,
Michael
[Bild: banner.png]
Support erfolgt NUR im Forum!
Bitte gelöste Themen als "erledigt" markieren.
Beiträge mit mangelhafter Rechtschreibung/Grammatik werden kommentarlos gelöscht.


Möglicherweise verwandte Themen…
Thema Verfasser Antworten Ansichten Letzter Beitrag
Question Tasks,Cronjob wie laufen die niGhtY 9 4.396 26.09.2009, 16:06
Letzter Beitrag: Sin73
  PHP-Code in Template ausführen problemkenner 2 1.839 04.11.2008, 15:53
Letzter Beitrag: problemkenner
  Tasks laufen nicht forumfreund 29 10.632 16.10.2008, 09:52
Letzter Beitrag: linwinman