Subversion Repositories personal-webbase

Rev

Go to most recent revision | Blame | Last modification | View Log | RSS feed

  1. <?php
  2.  
  3. if (!defined('WBLEGAL')) die('Kann nicht ohne Personal WebBase ausgef&uuml;hrt werden.');
  4.  
  5. function cron_shutdown()
  6. {
  7.         global $modul;
  8.         global $passiv;
  9.         global $logge_fehler;
  10.         global $out;
  11.  
  12.         if ($logge_fehler)
  13.         {
  14.                 $out = ob_get_contents();
  15.                 if ((ob_get_level() > 0) || (ob_get_length() !== FALSE))
  16.                         @ob_end_clean();
  17.         }
  18.  
  19.         if (($out != '') && (function_exists('fehler_melden')))
  20.         {
  21.                 db_connect(); // Durch die übliche Shutdown-Funktion ist die DB-Verbindung bereits getrennt
  22.                 fehler_melden($modul, '<b>Cron-Ausgabe nicht leer</b><br><br>Der Crondurchlauf ist unsauber, da ein Modul Ausgaben verursacht. Dies zeigt in der Regel eine St&ouml;rung des Systems oder eine Fehlfunktion der Module. Die komplette Ausgabe des Crondurchlaufes ist:<br><br>'.$out);
  23.                 db_disconnect();
  24.         }
  25. }
  26.  
  27. // Cron-Jobs nur jede Minute zulassen, nicht öfter
  28. // Wenn Cron-Job überpünktlich, z.B. bei I=59s, dann würde der Cronjob ausfallen, daher prüfe ich auf 50 Sekunden-Zyklus
  29. $rsc = db_query("SELECT * FROM `".$WBConfig->getMySQLPrefix()."configuration` WHERE `name` = 'last_cronjob' AND `value` <= DATE_SUB(NOW(), INTERVAL 50 SECOND)");
  30. if (db_num($rsc) > 0)
  31. {
  32.         // Fehlerlogging starten
  33.         $logge_fehler = true;
  34.  
  35.         register_shutdown_function('cron_shutdown');
  36.  
  37.         wb_change_config('last_cronjob', db_time(), $modul);
  38.         wb_change_config('lastpromoter', $_SERVER['REMOTE_ADDR'], $modul);
  39.  
  40.         ob_start();
  41.  
  42.         // Reinigungsmodul statisch aufrufen, bevor die Cronjobs von den Modulen durchgeführt werden.
  43.         // Grund: Bei den Cronjob-Arbeiten sollen die Module möglichst keine Datensätze mit ungültigen Bezügen bearbeiten
  44.         $modul_bak = $modul;
  45.  
  46.         $modul = 'common_cleaner';
  47.         $module_information = WBModuleHandler::get_module_information($modul);
  48.  
  49.         if (file_exists('modules/'.$modul.'/static/'.$modul_bak.'/main.inc.php'))
  50.         {
  51.                 $filename = 'modules/'.$modul.'/static/'.$modul_bak.'/main.inc.php';
  52.  
  53.                 // eval() statt include(), damit Parsing-Fehler gemeldet werden können, die der Admin nicht sehen würde!
  54.                 eval('?>' . trim(implode("\n", file($filename))));
  55.         }
  56.  
  57.         $modul = $modul_bak;
  58.  
  59.         // Nun die Modulcronjobs durchführen
  60.  
  61.         foreach ($modules as $m1 => $m2)
  62.         {
  63.                 $module_information = WBModuleHandler::get_module_information($m2);
  64.  
  65.                 // Nun die Modulcrons laden
  66.                 if (file_exists('modules/'.$m2.'/crossover/'.$modul.'/main.inc.php'))
  67.                 {
  68.                         $filename = 'modules/'.$m2.'/crossover/'.$modul.'/main.inc.php';
  69.  
  70.                         // eval() statt include(), damit Parsing-Fehler gemeldet werden können, die der Admin nicht sehen würde!
  71.                         eval('?>' . trim(implode("\n", file($filename))));
  72.                 }
  73.         }
  74.  
  75.         unset($m1);
  76.         unset($m2);
  77.  
  78.         $success = true;
  79. }
  80. else
  81. {
  82.         $success = false;
  83. }
  84.  
  85. // Ab hier keine Fehler mehr loggen...
  86. $out = ob_get_contents();
  87. if ((ob_get_level() > 0) || (ob_get_length() !== FALSE))
  88.         @ob_end_clean();
  89. $logge_fehler = false;
  90.  
  91. if ((isset($passiv)) && ($passiv == 1))
  92. {
  93.         // Wird bei der Hinzufügung der "GIF"-Datei gesetzt, nicht hier
  94.         // wb_change_config('passivcron', '0', $modul);
  95.  
  96.         // Wir tun so, als wären wir ein Spacer
  97.         if (!headers_sent()) header('Content-type: image/gif');
  98.         readfile('designs/spacer.gif');
  99. }
  100. else
  101. {
  102.         wb_change_config('passivcron', '0', $modul);
  103.         if ((!isset($silent)) || ($silent != 'yes'))
  104.         {
  105.                 if ($success)
  106.                         echo $header.'<b>Cronjobs ausgef&uuml;hrt</b><br><br>Die Cronjobs wurden erfolgreich durchgef&uuml;hrt'.$footer;
  107.                 else
  108.                         echo $header.'<b>Cronjobs nicht ausgef&uuml;hrt</b><br><br>Die Cronjobs k&ouml;nnen nur jede Minute ausgef&uuml;hrt werden.'.$footer;
  109.         }
  110. }
  111.  
  112. ?>