Example #1
0
    static function execute($cronjobID)
    {
        $lockToken = md5(TIMESTAMP);
        $db = Database::get();
        $sql = 'SELECT class FROM %%CRONJOBS%% WHERE isActive = :isActive AND cronjobID = :cronjobId AND `lock` IS NULL;';
        $cronjobClassName = $db->selectSingle($sql, array(':isActive' => 1, ':cronjobId' => $cronjobID), 'class');
        if (empty($cronjobClassName)) {
            throw new Exception(sprintf("Unknown cronjob %s or cronjob is deactive!", $cronjobID));
        }
        $sql = 'UPDATE %%CRONJOBS%% SET `lock` = :lock WHERE cronjobID = :cronjobId;';
        $db->update($sql, array(':lock' => $lockToken, ':cronjobId' => $cronjobID));
        $cronjobPath = 'includes/classes/cronjob/' . $cronjobClassName . '.class.php';
        // die hard, if file not exists.
        require_once $cronjobPath;
        /** @var $cronjobObj CronjobTask */
        $cronjobObj = new $cronjobClassName();
        $cronjobObj->run();
        self::reCalculateCronjobs($cronjobID);
        $sql = 'UPDATE %%CRONJOBS%% SET `lock` = NULL WHERE cronjobID = :cronjobId;';
        $db->update($sql, array(':cronjobId' => $cronjobID));
        $sql = 'INSERT INTO %%CRONJOBS_LOG%% SET `cronjobId` = :cronjobId,
		`executionTime` = :executionTime, `lockToken` = :lockToken';
        $db->insert($sql, array(':cronjobId' => $cronjobID, ':executionTime' => Database::formatDate(TIMESTAMP), ':lockToken' => $lockToken));
    }