Problem Cronjobs Plugin
Problem Cronjobs Plugin
Guten Morgen
Folgendes Problem:
Über das Cronjob Plugin habe ich ein Paar Cronjobs am laufen (V. 4.9.7).
Es zeigt an das diese Durchgeführt wurden, nur leider ist das nicht der fall.
Wenn ich diese manuell anstosse funktioniert es.
Wo könnte hier das Problem liegen?
LG - derJu
Folgendes Problem:
Über das Cronjob Plugin habe ich ein Paar Cronjobs am laufen (V. 4.9.7).
Es zeigt an das diese Durchgeführt wurden, nur leider ist das nicht der fall.
Wenn ich diese manuell anstosse funktioniert es.
Wo könnte hier das Problem liegen?
LG - derJu
Contenido 4.8.20 | Contenido 4.9.12
-
- Beiträge: 4316
- Registriert: Do 30. Jun 2005, 22:56
- Wohnort: Eltmann, Unterfranken, Bayern
- Hat sich bedankt: 6 Mal
- Danksagung erhalten: 4 Mal
- Kontaktdaten:
Re: Problem Cronjobs Plugin
Am Wetter?! Es wird heiß!derju hat geschrieben:Wo könnte hier das Problem liegen?

Spaß beiseite, ein bisserl wenig Infos sind das schon. Was hast Du genau gemacht? Laufen die Cronjobs des Core durch? Steht was in den Logs?
Wir brauchen Input! (frei nach Nummer 5)

Gruß aus Franken
Ortwin
ConLite 3.0.0-dev, alternatives und stabiles Update von Contenido 4.8.x unter PHP 8.x - Download und Repo auf Gitport.de
phpBO Search Advanced - das Suchwort-Plugin für CONTENIDO 4.9
Mein Entwickler-Blog
phpBO Search Advanced - das Suchwort-Plugin für CONTENIDO 4.9
Mein Entwickler-Blog
Re: Problem Cronjobs Plugin
Ich denke, ich hatte das auch schon mal und bin da einem Irrglauben aufgesessen.
Die Contenido-Cronjobs sind lediglich Pseudo-Cronjobs, das heißt: sie laufen nicht servergesteuert, sondern benötigen einen Trigger, der sie auslöst. Das ist hier ein Besuch auf der Webseite um diese Uhrzeit. Findet dort kein Traffic statt, wird der Pseudo-Cronjob auch nicht ausgelöst. Diese Cronjobs eignen sich somit eigentlich nur für hochfrequentierte Seiten. Für alles andere benötigt man (sofern der eigene Server nicht cronjobfähig ist) einen externen (kostenfreien) Cronjob-Service.
LG
Viktor
Die Contenido-Cronjobs sind lediglich Pseudo-Cronjobs, das heißt: sie laufen nicht servergesteuert, sondern benötigen einen Trigger, der sie auslöst. Das ist hier ein Besuch auf der Webseite um diese Uhrzeit. Findet dort kein Traffic statt, wird der Pseudo-Cronjob auch nicht ausgelöst. Diese Cronjobs eignen sich somit eigentlich nur für hochfrequentierte Seiten. Für alles andere benötigt man (sofern der eigene Server nicht cronjobfähig ist) einen externen (kostenfreien) Cronjob-Service.
LG
Viktor
-
- Beiträge: 1951
- Registriert: Sa 8. Sep 2007, 16:23
- Wohnort: Brandenburg
- Hat sich bedankt: 15 Mal
- Kontaktdaten:
Re: Problem Cronjobs Plugin
Ja, scheint nur ein Pseudo-Cron zu sein:
https://docs.contenido.org/display/CONDEVE/Cronjob
Aber man macht dabei auch wahnsinnig schnell Fehler und denkt, man hätte alles richtig eingetragen, dabei tut es ganz was anderes oder gar nichts.
https://wiki.ubuntuusers.de/cron
Testen ob er läuft kann man am besten, wenn man eine kurze Zeit einstellt (alle 2 min) und lediglich ein Echo ausgibt (falls man an der Konsole sitzt) oder etwas in ein Logfile schreibt.
Dann weiß man, er läuft prinzipiell (Logfile würde ich als Standard immer empfehlen).
Manche Hoster, die echte Cronjobs auch auf Shared Hosting anbieten, haben ein extra Verzeichnis dafür, wo die Crontab hinein muss (Achtung, Pfade kontrollieren) oder ein Fenster, wo man den Crontab-Text hineinkopieren kann.
So geht es dann natürlich nicht mit der Contenido Version aber wer einen echten Cronjob zur Verfügung hat, sollte diesen nutzen.
Ansonsten muss man bei Linux/Unix Servern selbst schauen, wie der Pfad zur Crontab ist.
https://docs.contenido.org/display/CONDEVE/Cronjob
Aber man macht dabei auch wahnsinnig schnell Fehler und denkt, man hätte alles richtig eingetragen, dabei tut es ganz was anderes oder gar nichts.
https://wiki.ubuntuusers.de/cron
Testen ob er läuft kann man am besten, wenn man eine kurze Zeit einstellt (alle 2 min) und lediglich ein Echo ausgibt (falls man an der Konsole sitzt) oder etwas in ein Logfile schreibt.
Dann weiß man, er läuft prinzipiell (Logfile würde ich als Standard immer empfehlen).
Manche Hoster, die echte Cronjobs auch auf Shared Hosting anbieten, haben ein extra Verzeichnis dafür, wo die Crontab hinein muss (Achtung, Pfade kontrollieren) oder ein Fenster, wo man den Crontab-Text hineinkopieren kann.
So geht es dann natürlich nicht mit der Contenido Version aber wer einen echten Cronjob zur Verfügung hat, sollte diesen nutzen.
Ansonsten muss man bei Linux/Unix Servern selbst schauen, wie der Pfad zur Crontab ist.
Fliegt der Bauer übers Dach, ist der Wind weißgott nicht schwach.
Re: Problem Cronjobs Plugin
Ok aber weshalb zeigt er dann an das er ausgeführt wurde.Ich denke, ich hatte das auch schon mal und bin da einem Irrglauben aufgesessen.
Die Contenido-Cronjobs sind lediglich Pseudo-Cronjobs, das heißt: sie laufen nicht servergesteuert, sondern benötigen einen Trigger, der sie auslöst. Das ist hier ein Besuch auf der Webseite um diese Uhrzeit. Findet dort kein Traffic statt, wird der Pseudo-Cronjob auch nicht ausgelöst. Diese Cronjobs eignen sich somit eigentlich nur für hochfrequentierte Seiten. Für alles andere benötigt man (sofern der eigene Server nicht cronjobfähig ist) einen externen (kostenfreien) Cronjob-Service.
LG
Viktor
LG - derJu
Contenido 4.8.20 | Contenido 4.9.12
Re: Problem Cronjobs Plugin
Hier meine crontab.txt
LG - derJu
Code: Alles auswählen
*/2 * * * * move_articles.php
*/5 * * * * send_reminder.php
0 0 1 * * move_old_stats.php
0 0 * * * optimize_database.php
*/5 * * * * send_reminder.php
*/5 * * * * setfrontenduserstate.php
15 2 * * * import_members.php
20 2 * * * import_branchen.php
40 14 * * * import_frontend_users.php
30 2 * * * import_newsletter_recipients.php
45 2 * * * import_newsletter_e_recipients.php
50 2 * * * import_newsletter_group.php
#02 1 * * * linkchecker.php
0 0 * * * maintain_password_reset_requests.php
#*/2 * * * * test.php
*/2 * * * * importFrontendUsers.php
Contenido 4.8.20 | Contenido 4.9.12
Re: Problem Cronjobs Plugin
Code: Alles auswählen
<?php
/**
* Template cronjob file
*
* @package Core
* @subpackage Cronjob
*
* @author claus.schunk@4fb.de
* @copyright four for business AG <www.4fb.de>
* @license http://www.contenido.org/license/LIZENZ.txt
* @link http://www.4fb.de
* @link http://www.contenido.org
*/
if (!defined('CON_FRAMEWORK')) {
define('CON_FRAMEWORK', true);
}
// CONTENIDO path
$contenidoPath = str_replace('\\', '/', realpath(dirname(__FILE__) . '/../')) . '/';
// CONTENIDO startup process
include_once($contenidoPath . 'includes/startup.php');
$cfg = cRegistry::getConfig();
require_once(cRegistry::getBackendPath() . $cfg['path']['includes'] . 'pseudo-cron.inc.php');
require_once $backendPath . $cfg['path']['classes'] . 'contenido/class.user.php';
require_once $backendPath . $cfg['path']['classes'] . 'class.xml.php';
require_once $backendPath . $cfg['path']['classes'] . 'contenido/class.frontend.user.php';
require_once $backendPath . $cfg['path']['classes'] . 'contenido/class.frontend.group.php';
require_once $backendPath . $cfg['path']['classes'] . 'contenido/class.frontend.group.member.php';
if (!isRunningFromWeb() || function_exists('runJob') || $area == 'cronjobs') {
class PX_FrontEndUser {
var $AdrId;
var $AdrLogin;
var $AdrPW;
var $AdrEmail;
function PX_FrontEndUser($aa) {
foreach ($aa as $k=>$v)
$this->$k = $aa[$k];
}
}
function readDatabase($filename) {
// read the XML database of aminoacids
$data = implode("", file($filename));
$parser = xml_parser_create();
xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, 0);
xml_parser_set_option($parser, XML_OPTION_SKIP_WHITE, 1);
xml_parse_into_struct($parser, $data, $values, $tags);
xml_parser_free($parser);
// loop through the structures
foreach ($tags as $key=>$val) {
if ($key == "qryAdressLogin") {
$ranges = $val;
// each contiguous pair of array entries are the
// lower and upper range for each molecule definition
for ($i=0; $i < count($ranges); $i+=2) {
$offset = $ranges[$i] + 1;
$len = $ranges[$i + 1] - $offset;
$tdb[] = parseNode(array_slice($values, $offset, $len));
}
} else {
continue;
}
}
return $tdb;
}
function parseNode($node) {
for ($i=0; $i < count($node); $i++) {
$fe_user[$node[$i]["tag"]] = $node[$i]["value"];
}
return new PX_FrontEndUser($fe_user);
}
function updateRecord($record, $client) {
$feusers = new cApiFrontendUserCollection;
$feusers->resetQuery();
$feusers->setWhere('syncid', $record->AdrId);
$feusers->setWhere('idclient', '1');
$feusers->query();
$username = utf8_decode($record->AdrLogin);
$password = trim(utf8_decode($record->AdrPW));
$email = trim(utf8_decode($record->AdrEmail));
if($feusers->count() > 0) {
$feuser = $feusers->next();
// echo 'update: ' . $username . '<br>';
/**/
//$feuser->set('username', str_replace($suchen1, $ersetzen1, $username));
$feuser->set('username', $username);
$feuser->set('password', $password);
$feuser->set('email', $email);
$feuser->set('password_clear', $password);
$feuser->store();
}
else {
/*
echo '<br>create: ' . $username . '<br>';
echo $client . '<br>';
echo $record->AdrId . '<br>';
echo $email . '<br>';
echo $password . '<br>';
*/
$feuser = $feusers->create($username, $password);
$feuser->set('idclient', '1');
$feuser->set('active', true);
$feuser->set('syncid', $record->AdrId);
$feuser->set('email', $email);
$feuser->set('password_clear', $password);
$feuser->set('modified', date('Y-m-d H:i:s'), false);
$feuser->store();
$fegroups = new cApiFrontendGroupCollection;
$fegroups->select("idclient = '1' AND defaultgroup='1'");
$members = new cApiFrontendGroupMemberCollection;
$iduser = $feuser->get("idfrontenduser");
while ($fegroup = $fegroups->next()) {
$idgroup = $fegroup->get("idfrontendgroup");
$members->create($idgroup, $iduser);
}
}
}
$client = '1';
$upload_dir = '../../upload/';
$xml_file = $upload_dir . 'login.xml';
if (file_exists($xml_file)) {
$xml_db = readDatabase($xml_file);
$synchdate = date("Y-m-d H:i:s");
foreach($xml_db as $fe_user) {
updateRecord($fe_user, $client);
}
$old_fe_users = new cApiFrontendUserCollection;
$old_fe_users->resetQuery();
$old_fe_users->select('idclient = ' . $client . ' AND modified < \'' . $synchdate . '\' AND syncid <> \'\'');
while($old_fe_user = $old_fe_users->next()) {
$old_fe_users->delete($old_fe_user->get('idfrontenduser'));
}
}
}
?>
Contenido 4.8.20 | Contenido 4.9.12
Re: Problem Cronjobs Plugin
Bis jetzt konnte ich das Problem leider nicht lösen.
Der Crontab wird ausgelöst, und auch geloggt doch das updateRecord bzw. create wird nicht ausgeführt.
Wenn ich den Cronjob in der 4.9.8 via Administration/Cronjobs ausführe funktioniert es wunderbar.
Vielleicht fällt jemandem noch was auf?
LG - derJu
Der Crontab wird ausgelöst, und auch geloggt doch das updateRecord bzw. create wird nicht ausgeführt.
Wenn ich den Cronjob in der 4.9.8 via Administration/Cronjobs ausführe funktioniert es wunderbar.
Vielleicht fällt jemandem noch was auf?
LG - derJu
Contenido 4.8.20 | Contenido 4.9.12
Re: Problem Cronjobs Plugin
Was deinen Code angeht, kann ich dir erstmal nicht helfen - ich denke, es ist einfach sicherer, du packst den gewünschten Code in ein normales Modul, wo das ganze Framework zum Testen bereitsteht, und nimmst dir einen kostenfreien Cronjob-Anbieter hinzu, wo du dann das Modul/den Artikel zeitgesteuert aufrufen lässt. Ich habs irgendwann aufgegeben mit den Pseudocronjobs, weil es einfach zu unzuverlässig war für das, was ich brauche.