Hallo, Gast! (Registrieren)

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


Benutzer, die gerade dieses Thema anschauen: 2 Gast/Gäste
Task wird nicht ausgeführt
#1
Hi Leute,

ich lasse in einem Plugin folgenden Task anlegen:
PHP-Code:
// Check if Task Exists
    $taskExists $db->simple_select(
        'tasks',
        'tid',
        'file = \'sn_meintask\'',
        array('limit' => '1')
    );

    // create new Task
    if ($numRows == 0) {
        require_once MYBB_ROOT '/inc/functions_task.php';

        $new_task = [
            'title' => $lang->sn_taskname,
            'description' => $db->escape_string($lang->sn_meintask_desc),
            'file' => 'sn_meintask',
            'minute' => '*',
            'hour' => '*',
            'day' => '*',
            'month' => '*',
            'weekday' => '7',
            'enabled' => '1',
            'logging' => '1',
        ];

        $new_task['nextrun'] = fetch_next_run($new_task);

        $db->insert_query('tasks'$new_task);
        
$cache->update_tasks();
    

Die Task-Datei funktioniert einwandfrei, wenn man sie in der Aufgabenplanung manuell startet.
Über den Scheduler wird die Task-Datei allerdings nie gestartet.
Ich finde keinen Fehler und weiß mir momentan keinen Rat. Sad
Und ja, es sind an diesem Wochentag auch User eingeloggt und ja, andere Tasks funktionieren. Wink 
Es muss also an "mir" liegen. Rolleyes

Hat jemand eine Idee??
Zitieren
#2
$numRows scheint nicht definiert zu sein Wink
Zitieren
#3
Hallo Sven,

danke, damit hast Du zwar recht, aber es wird trotzdem nichts gestartet.
Hier nochmal die überarbeitete Version:

PHP-Code:
// Check if Task Exists
    $taskExists $db->simple_select(
        'tasks',
        'tid',
        'file = \'sn_meintask\'',
        array('limit' => '1')
    );
  
    $numRows 
$db->num_rows($taskExists);

    // create new Task
    if ($numRows == 0) {
        require_once MYBB_ROOT '/inc/functions_task.php';

        $new_task = [
            'title' => $lang->sn_taskname,
            'description' => $db->escape_string($lang->sn_meintask_desc),
            'file' => 'sn_meintask',
            'minute' => '*',
            'hour' => '*',
            'day' => '*',
            'month' => '*',
            'weekday' => '7',
            'enabled' => '1',
            'logging' => '1',
        ];

        $new_task['nextrun'] = fetch_next_run($new_task);

        $db->insert_query('tasks'$new_task);
 
$cache->update_tasks();
    
Zitieren
#4
Hast du mal versucht die Aufgabe manuell neu zu definieren, also nicht via Plugin anlegen zu lassen?
Zitieren
#5
Wenn ich die Frage von SvePu lese, fällt mir ein, dass ich auch mal einen Task gemacht habe, welcher bestimmte User in entsprechende Unterguppen zuweist. Der Task funktionerte erst als ich ihn einmal im ACP bearbeitete, abspeicherte und manuell ausführte. Seither läuft er entsprechend dem eingestellten Zeitintervall. Warum, wieso, weshalb war mir damals egal, das Ziel war erreicht.

Zum Task:
Mir war es einfach zu Zeitintensiv immer darauf zu achten dass bestimmte User mit entsprechenden Merkmalen auch bestimmte Rechte (z.B. zusätzliche Gruppen) erhalten, oder entzogen bekommen. Jetzt macht es der Task alle 60 Minuten automatisch.
Sollte ich der Ansicht sein helfen zu können biete ich Hilfe(n) an!  ...ich bitte jedoch nicht darum helfen zu dürfen!
Tools [Unixzeit ⇔ Realzeit] ♦ [BOM-Finder] ♦ [SQL-Prefix-Changer] ♦ [USV-Rechner] ♦ [PlugIns]
Zitieren
#6
(28.03.2021, 18:17)SvePu schrieb: Hast du mal versucht die Aufgabe manuell neu zu definieren,

Ja hatte ich mal, kann es aber nochmal testen. Ich habe auch schon x-mal im Scheduler die Zeiten geändert und neu abgespeichert - nichts.

Was mich wundert: In der Augabenverwaltung hängt die nächste Ausführungszeit immer 1 Stunde hinter der aktuellen Zeit hinterher, obwohl im ACP die Zeitzone und Sommerzeitkorrektur korrekt eingestellt ist.
Kann das ein Grund sein? Die nächste Ausführungszeit liegt also augenscheinlich immer in der Vergangenheit. Rolleyes
Zitieren
#7
Nur ein Hinweis zur Erinnerung:
Nicht vergessen, nach einer Task-Änderung das Forum neu aufzurufen.
Ein Task mit definiertem Intervall läuft niemlas von allein (es ist nicht vergleichbar mit einem Cronjob) - er wird nur dann ausgeführt, wenn das Forum und somit das "<img src="task.php"> im Footer aufgerufen wrid. Denn das ist der Trigger.
Alle fälligen Tasks werden immer beim nächsten Seitenaufruf abgearbeitet.

[EXiTuS]
MyBB + innovative Themes:
NokiaPort.de Forum Nokia-Traditionsforum seit 2006.
Live Escape Game Forum Diskussionsplattform für Escape-Rooms.
Unlösbares Problem, Dilemma? -> das Nötel Smile
Zitieren
#8
@[EXiTuS]

Ist mir alles klar. So wenige User habe ich dann doch nicht im Forum, dass es tagelang stillsteht. Big Grin 
Der Scheduler läuft auch fleißig zum nächsten Ausführungszeitpunkt sobald sich wer eingeloggt hat.
Der Task wurde aber trotzdem nicht ausgeführt. Und ja, die Task-Datei ist vorhanden und funktioniert perfekt.

Ich habe schon andere Sachen verschlimmbessert, aber hier komme ich mir gerade richtig blöd vor.
Es war auch nicht geplant, dass ich mir jede Nacht den Wecker stelle, um den Task selbst auszuführen. Big Grin Big Grin
Zitieren
#9
Das Problem ist die Zeitangabe. Der Wochentag wird bei PHP von 0 (Sonntag) bis 6 (Samstag) durchnummeriert und auch die Sterne bei Minuten und Stunde machen wahrscheinlich etwas anderes als du denkst. Ich vermute, dass du "einmalig, egal zu welcher Uhrzeit" meintest, tatsächlich bedeutet das aber "jedes Mal", also von 00:00 bis 23:59 Uhr insgesamt bis zu 1440 mal.

(28.03.2021, 19:11)Schnapsnase schrieb: Was mich wundert: In der Augabenverwaltung hängt die nächste Ausführungszeit immer 1 Stunde hinter der aktuellen Zeit hinterher, obwohl im ACP die Zeitzone und Sommerzeitkorrektur korrekt eingestellt ist.
Kann das ein Grund sein? Die nächste Ausführungszeit liegt also augenscheinlich immer in der Vergangenheit. Rolleyes
Ich habe es nicht nachgeschaut, aber vermutlich gilt beim Aufgabensystem die Serverzeit oder GMT. Für die Aufgaben sind Zeitzonen nicht relevant.
[Bild: banner.png]

Bitte die Foren-Regeln beachten und im Profil die verwendete MyBB-Version angeben.
Zitieren
#10
(29.03.2021, 09:52)StefanT schrieb: ..tatsächlich bedeutet das aber "jedes Mal", also von 00:00 bis 23:59 Uhr insgesamt bis zu 1440 mal.

Hallo Stefan,

ja das leuchtet alles ein, aber egal wie es definiert ist...(ich habe testweise auch schon "jeden Wochentag/jede Stunde" definiert)
Irgendwann muss doch dieser verdammte Task mal starten - tut er aber nicht.
Zitieren


Möglicherweise verwandte Themen…
Thema Verfasser Antworten Ansichten Letzter Beitrag
  "Task" > SQL-Befehl funktioniert nicht Gerti 7 2.854 30.11.2020, 16:59
Letzter Beitrag: Gerti
  Hooks werden nicht immer ausgeführt! icarus 9 3.906 16.11.2011, 16:47
Letzter Beitrag: icarus