External Cronjob Execution API und das WSC 5.2

  • WSC 5.2 (hurricane)
  • External Cronjob Execution API

  • Das hört sich sehr gut an so macht das doch Spaß natürlich muss es dafür auch laufen .


    Was ich mir nur denke ist hatt sich da nicht an den crons vielleicht was geändert was du mit aufnehmen musst wie die sache mit den Likes sind ja jetzt Reaktionen also einen anderen cron ? Oder stößt dein Plugin eine Woltlab php an wo die quasie inbegriffeen sind und abgearbeitet werden ?


    Wie funktioniert das ?

  • Das Plugin geht generisch mit den Cronjob um, sprich es ist egal welche Pakete so alles installiert sind und was WoltLab an Likes/Reaktionen bastelt. :)

    Du musst nur aufpassen, dass die Cronjobs, die ausgeführt werden sollen, auch aktiviert sind - aber das musst du ohne das Plugin ja genauso.

  • Ich muss ja einen Cronjob dazu erstellen und das habe ich dazu im Forum gefunden:

    Code: Auszug aus crontab

    Code
    # For more information see the manual pages of crontab(5) and cron(8)
    #
    # m h dom mon dow command
    * * * * * php /var/www/vhosts/mysterycode/wcf/cron.php > /dev/null 2>&1 # jede Minute ausführen
    */5 * * * * php /var/www/vhosts/mysterycode/wcf/cron.php > /dev/null 2>&1 # alle 5 Minuten ausführen

    Ich will den für mich verwenden:

    Quote
    Code
    */5 * * * * php /var/www/vhosts/mysterycode/wcf/cron.php > /dev/null 2>&1 # alle 5 Minuten ausführen

    Bei meinem Webhoster steht als Server-Pfad: /var/www/web582


    Die cron.php liegt in : htdocs/abc


    Ist der richtige Befehl beim Anlegen des Cronjobs dann:

    Code
    php /var/www/web582/htdocs/abc/cron.php > /dev/null 2>&1


    ?


    Irgendwie habe ich den Eindruck, dass es nicht funktioniert. Alle Cronjobs die im ACP sind, habe sich seit 2 Stunden nicht aktualisiert. Ich kann das über das Protokoll im ACP sehr gut nachverfolgen, da ich im Aufbau des Forums bin, und daher keine Aktivitäten laufen. Ich bin halt der Einzige auf der Seite und aktuell nur im ACP.


    Danke für eure Antworten.

  • Habe es mit

    Code
    wget --quiet -O /dev/null https://www.meinedomain.de/cron.php

    gelöst und die Ausführung auf alle 5 Minuten gestellt. Der Befehl ist doch ok, oder? Funktioniert auf jeden Fall. Wenn nicht, wie sähe der Befehl besser aus und was war an dem php Befehl falsch?

  • Aus gegebenem Anlass:

    sudo -u www-data env HTTPS=ON php /pfad/cron.php

    So wird das Script vom PHP-Benutzer mit PHP ausgeführt und ein Parameter gesetzt, der besagt, dass eine SSL-Verbindung möglich ist.

    Sollte die Seite nicht über https erreichbar sein, bitte das hier nutzen:

    sudo -u www-data php /pfad/cron.php


    Falls du dich fragst, wozu man den Parameter braucht: Sitemaps haben kein https - Seite 2 - WoltLab Suite Core - WoltLab® ;)


    Prinzipiell funktioniert deine Variante natürlich auch, eleganter wäre es allerdings direkt über PHP statt den Webserver mit zu belasten - und man muss auch die Limits vom Webserver nicht beachten. :)


    PS: Ich habe angenommen, dass PHP als Benutzer www-data ausgeführt wird und PHP in der Kommandozeile mit php in der entsprechenden Version verfügbar ist. Das müsstest du bei dir ggf. anpassen. :)

  • Da der erste Befehl nicht ausgeführt wurde, habe ich meinen Provider angeschrieben. Übrigens kam als Fehlermeldung, dass sudo unbekannt ist.


    Die Antwort des Providers:

    Quote

    normalerweise werden Scripte immer mit Ihrem eigenen Benutzer (web582) ausgeführt. Dementsprechend müsste der folgende Befehl normalerweise funktionieren:

    /usr/bin/php /var/www/web582/htdocs/abc/cron.php

    Nur wenn ich das eingebe bekomme ich diese Fehlermeldung:

    Code
    PHP Parse error: syntax error, unexpected '?' in /var/www/web582/htdocs/abc/lib/core.functions.php on line 104

    Ich kenne mich da gar nicht aus. Was kann da falsch sein, was muss ich wie ändern?

  • Ich habe den Provider angeschrieben. Die Antwort hat mehrere Tage gedauert. Ist gerade gekommen:

    Quote

    wenn Sie "/usr/bin/php" im Cronjob nutzen, dann verwenden Sie nur die Standard-Version von Debian (5.6.4), so wie in meiner vorherigen Email beschrieben. Ansonsten können Sie unter /opt die entsprechende PHP-Version gezielt auswählen. Wir empfehlen allerdings den Cron direkt per curl oder wget auf den Webserver durchzuführen, da dann sichergestellt ist, dass Sie immer die identische PHP-Version verwenden.

    Wie mache ich das mit dem /opt ?


    Bin da echt der Anfänger.