Beiträge: 25.752
Themen: 269
Registriert seit: 20.09.2005
Da ich weder weiß, was du beim Task jetzt eingestellt hast, noch wie dieser aussieht, kann ich nur raten.
Von einem Fehler im Task selber (den man beim manuellen Ausführen nicht unbedingt bemerkt) bis zu falschen Einstellungen ist alles möglich.
Anhand der Spalte "nextrun" solltest du sehen, welcher Task als nächstes dran ist und die Spalte "locked" muss zu diesem Zeitpunkt auch 0 sein und ändert sich während der Ausführung.
Bitte die Foren-Regeln beachten und im Profil die verwendete MyBB-Version angeben.
Beiträge: 2.229
Themen: 33
Registriert seit: 25.05.2018
MyBB-Version: 1.8.38
29.03.2021, 12:24
(Dieser Beitrag wurde zuletzt bearbeitet: 29.03.2021, 12:25 von Schnapsnase.)
Folgendes ist momentan geplant: *,*,*,*,0 In der Datenbank steht nextrun auf 04.04.21 0:00 Uhr
Lastrun steht auf 29.03.21 2:30 Uhr. Der Task wurde aber zu dieser Zeit nicht ausgeführt.
Locked steht in der DB auf "1" - warum?
Beiträge: 25.752
Themen: 269
Registriert seit: 20.09.2005
Ich kann keine Stelle finden, die die Spalte locked auf 1 setzt, normale Werte sind ein Timestamp oder eben 0.
Ist dort ein Timestamp zu finden, läuft der Task entweder gerade oder ist im letzten Durchlauf abgebrochen.
Bitte die Foren-Regeln beachten und im Profil die verwendete MyBB-Version angeben.
Beiträge: 2.229
Themen: 33
Registriert seit: 25.05.2018
MyBB-Version: 1.8.38
Richtig Stefan,
ich habe mir die Tabelle nur mal eben schnell im Editor angesehen und daher falsch interpretiert.
bei Locked steht der Timestamp, den ich oben fälschlicherweise als Lastrun beschrieben habe, also 29.03.21 02:xxx Uhr.
Aber warum wird der Task in der DB ausgeknockt?
Beiträge: 25.752
Themen: 269
Registriert seit: 20.09.2005
Ohne den Task zu kennen, kann ich das leider nicht beantworten.
Bitte die Foren-Regeln beachten und im Profil die verwendete MyBB-Version angeben.
Beiträge: 2.229
Themen: 33
Registriert seit: 25.05.2018
MyBB-Version: 1.8.38
29.03.2021, 14:24
(Dieser Beitrag wurde zuletzt bearbeitet: 29.03.2021, 14:27 von Schnapsnase.)
Ich habe die Taskdatei vorläufig erst/nur auf dem XAMPP - habe es aus dem Live-Forum wieder entfernt.
Ich sende Dir den heute Abend mal zu. Wäre nett, wenn Du mal drauf schaust.
Wie gesagt... die Datei funktioniert manuell einwandfrei.
Beiträge: 2.039
Themen: 10
Registriert seit: 28.06.2007
MyBB-Version: 1.8.x
Dieser Teil aus dem geposteten Code:
PHP-Code:
$new_task['nextrun'] = fetch_next_run($new_task);
$db->insert_query('tasks', $new_task);
setzt das nicht den gleichen "nextrun" Wert für alle vorhandenen Tasks, da es keine WHERE Bedingung enthält?
Vielleicht führt das dann zu einer Art Stau.
Beiträge: 2.229
Themen: 33
Registriert seit: 25.05.2018
MyBB-Version: 1.8.38
29.03.2021, 14:30
(Dieser Beitrag wurde zuletzt bearbeitet: 29.03.2021, 14:34 von Schnapsnase.)
Hi doylecc,
kann eigentlich nicht sein. Dann müssten nach der Installation alle Tasks in der DB den gleichen Timestamp bei nextrun haben. Das ist aber momentan nicht so.
![Wink Wink](https://www.mybb.de/forum/images/smilies/wink.gif)
In welchen Situationen wird denn ein Task in der DB auf "locked" gesetzt?
Beiträge: 1.401
Themen: 25
Registriert seit: 11.10.2013
MyBB-Version: 1.8.*
29.03.2021, 14:52
(Dieser Beitrag wurde zuletzt bearbeitet: 29.03.2021, 14:56 von SvePu.)
Sobald die Aufgabe in Abarbeitung ist, wird unter "locked" die altuelle Zeit eingetragen. Wird die Aufgabe ohne Probleme abgeschlossen oder existiert die zur Aufgabe zugeordnete PHP Datei nicht, wird "locked" wieder auf 0 gesetzt.
Dieses soll wohl die zeitgleiche doppelte Ausführung einer Aufgabe verhindern.
Beiträge: 25.752
Themen: 269
Registriert seit: 20.09.2005
29.03.2021, 15:16
(Dieser Beitrag wurde zuletzt bearbeitet: 29.03.2021, 15:21 von StefanT.)
(29.03.2021, 14:24)doylecc schrieb: Dieser Teil aus dem geposteten Code:
PHP-Code:
$new_task['nextrun'] = fetch_next_run($new_task);
$db->insert_query('tasks', $new_task);
setzt das nicht den gleichen "nextrun" Wert für alle vorhandenen Tasks, da es keine WHERE Bedingung enthält?
Seit wann braucht man bei insert Bedingungen?
(29.03.2021, 14:52)SvePu schrieb: Sobald die Aufgabe in Abarbeitung ist, wird unter "locked" die altuelle Zeit eingetragen. Wird die Aufgabe ohne Probleme abgeschlossen oder existiert die zur Aufgabe zugeordnete PHP Datei nicht, wird "locked" wieder auf 0 gesetzt.
Dieses soll wohl die zeitgleiche doppelte Ausführung einer Aufgabe verhindern.
Richtig, bleibt der Lock für eine längere Zeit, kann man von einem Problem mit dem Task ausgehen.
Bedenken sollte man, dass bei der manuellen Ausführung im Admin-CP Pfade und Variablen anders gesetzt sein können als bei der automatischen Ausführung. Auch wenn man beispielsweise exit reinpackt, wird der Lock nicht mehr entfernt. Klassiker ist natürlich, dass man eine Variable nicht ins global packt und der eigentlich korrekte Code deswegen einen Fehler wirft. Möglichkeiten gibt es da viele...
Bitte die Foren-Regeln beachten und im Profil die verwendete MyBB-Version angeben.