Cronjobs werden nicht mehr alle ausgeführt - Liegt die Ursache möglw. im begrenzten Tarif des Anbieters?

  • Vorab: Die hier bereits vorliegenden Beiträge zum Thema Cronjobs habe ich weitgehend gelesen. Mein Problem ist etwas anders gelagert. Mit Wechsel in einen anderen Tarif ist die Anzahl an möglichen Cronjobs auf 25 begrenzt. Ich habe derzeit Ausfälle bei den Cronjobs für die automatische Versendung von Geburtstagsgrüßen, die automatische Erstellung eines Willkommensthreads bei Neuanmeldungen etc.

    Nun zur den Fragen: Werden überzählige Cronjobs, also in diesem Falle alle über 25, dann in diesem Tarif einfach nicht mehr ausgeführt? Wenn ja - da die betroffenen Cronjobs unter den ersten 10 platziert sind, nach welchen Kriterien würde möglicherweise abgearbeitet, welche Cronjobs nicht mehr ausgeführt werden?

    Da ich diese Cronjobs nicht selbst erstellt habe, kann ich sie leider nicht zuordnen. Ist vielleicht mal jemand so lieb, und kann mir zu den einzelnen Cronjobs mal eine Plugin-/Programmzuordnung machen, damit ich gegebenfalls etwas rauslöschen kann?


    Vielen Dank.
    Wolfgang

  • Die Cronjobs in der Forensoftware haben nichts mit den von deinem Hoster zur Verfügung gestellten Cronjobs zu tun bzw. sind voneinander vollkommen unabhängig d.h. selbst wenn dir dein Hoster gar keine Cronjobs zur Verfügung stellen würde, hätte dies keine Auswirkung auf die Cronjobs in der Forensoftware.

  • Vielen Dank für die Info. Nun stehe ich wieder am Anfang der Suche nach den Ursachen ... Die Hinweise, die ich bei in der SuFu gefunden habe (z.B. keine Mehrfachausführung der Cronjobs etc.), habe ich weitgehend befolgt. Trotzdem ist z.B. die automatische Grußversendung bei Geburtstagen nicht mehr ausführbar, worauf ich aber unbedingt angewiesen bin.

    Würde evtl. etwas zu den Ursachen erkennbar sein, wenn ich diesen cronjob hier aufliste?

    Wolfgang

  • Ich habe mal die Datei foum/wcf/lib/system/cronjob/UserBirthdayNotificationCronjob.class.php heruntergeladen. Vielleicht lässt sich da ein Fehler ableiten!?

    <?php
    // wcf imports
    require_once(WCF_DIR.'lib/data/cronjobs/Cronjob.class.php');
    require_once(WCF_DIR.'lib/data/user/notification/NotificationHandler.class.php');
    require_once(WCF_DIR.'lib/data/user/notification/NotificationEditor.class.php');
    require_once(WCF_DIR.'lib/data/user/UserProfile.class.php');


    /**
    * Sends birthday notifications
    *
    * @Author Oliver Kliebisch
    * copyright 2009 Oliver Kliebisch
    * @license GNU Lesser General Public License <http://opensource.org/licenses/lgpl-license.php>
    * @package com.woltlab.community.wcf.user.birthday.notification
    * @subpackage data.user.notification.event
    * @category Community Framework
    */
    class UserBirthdayNotificationCronjob implements Cronjob {
    /**
    * @see Cronjob::execute()
    */
    public function execute($data) {
    if (!MODULE_USER_NOTIFICATION) return;
    // mark old events as confirmed as it is impolite to congratulate too late
    $sql = "SELECT user_notification.notificationID, user.*
    FROM wcf".WCF_N."_user_notification user_notification
    LEFT JOIN wcf".WCF_N."_user user
    ON (user.userID = user_notification.userID)
    WHERE user_notification.objectType = 'void'
    AND user_notification.eventName = 'userBirthday'
    AND user_notification.confirmed = 0";
    $result = WCF::getDB()->sendQuery($sql);


    $userIDs = array();
    $notificationIDArray = array();
    while ($row = WCF::getDB()->fetchArray($result)) {
    $notificationIDArray[] = $row['notificationID'];
    if ($row['userID'] && !isset($userIDs[$row['userID']])) {
    $userIDs[$row['userID']] = $row['userID'];
    }
    }


    if (count($notificationIDArray)) {
    NotificationEditor::markAllConfirmed($notificationIDArray);
    }


    // update affected users
    NotificationUser::recalculateUserNotificationFlags($userIDs);


    // fire new events
    $birthday = 'userOption' . User::getUserOptionID('birthday');
    $protectedProfile = 'userOption' . User::getUserOptionID('protectedProfile');
    if ($birthday == 'userOption' || $protectedProfile == 'userOption') {
    return;
    }


    $sql = "SELECT userID, " . $birthday . ", " . $protectedProfile . "
    FROM wcf" . WCF_N . "_user_option_value
    WHERE " . $birthday . " LIKE '%-" . date('m') . "-" . date('d') . "%'
    AND userID NOT IN (SELECT userID
    FROM wcf".WCF_N."_user_notification
    WHERE eventName = 'userBirthday'
    AND time >= ".(TIME_NOW - 86400 * 365).")";
    $result = WCF::getDB()->sendQuery($sql);
    while ($row = WCF::getDB()->fetchArray($result)) {
    if (!$row[$protectedProfile]) {
    $user = new UserProfile(null, $row);
    NotificationHandler::fireEvent('userBirthday', 'void', null, $user->userID, array('age' => $user->getAge()));
    }
    }
    }
    }
    ?>

    Recht vielen Dank.
    Wolfgang

  • Bis vor einigen Tagen (?) war es noch so, dass Benutzer, die Geburtstag hatten, per PN und per Mail eine Benachrichtigung mit Glückwünschen der Administration bekamen. Dies habe ich mit dem Plugin von Oliver Kliebisch (s.o.) bewerkstelligt. Es hat auch über Jahre tadellos funktioniert. Vor einigen Tagen hat sich ein Benutzer gemeldet, warum er keine Glückwünsche mehr per PN und/oder Mail bekommt. So bin ich erst darauf aufmerksam geworden. Ich kann aber nicht mit Bestimmtheit sagen, ab wann/nach welchem Ereignis das Plugin nicht mehr funktioniert hat.

    An Änderungen wurde Anfang des Jahres lediglich in einen neuen Tarif "umgezogen", beim alten Provider (All-Inkl). In diesem Tarif wurde auf PHP-Version 5.5.33 als CGI/FPM umgestellt, MySQL 5.6.30. Ich weiß nicht, ob das eine Relvanz für das Problem haben kann.

    Mittlerweile habe ich das Plugin de- und wieder neu installiert - keine Änderung. Mein Problem ist, dass ich über recht wenig fachliche Kenntnisse verfüge. Ich muss mir recht mühsam anlesen, wenn es Probleme gibt. Deshalb bitte ich um etwas Nachsicht, wenn ich nicht alles so fachlich richtig darstellen kann.

    Wolfgang

  • Hast Du mal im Fehlerprotokoll im ACP und auf dem Webspace nachgesehen, ob es dort entsprechende Einträge gibt? Möglicherweise wirft das alte Plugin in der neueren PHP-Umgebung einen Fehler.


    Gruß norse

    Zugang zu meinen Arbeiten und dem dazugehörigen Support bekommt Ihr bei Interesse hier und hier.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!