]> git.mxchange.org Git - friendica.git/blob - include/cronhooks.php
Cron/Queue: Setting a limit to avoid endless PHP jobs.
[friendica.git] / include / cronhooks.php
1 <?php
2
3 require_once("boot.php");
4
5
6 function cronhooks_run(&$argv, &$argc){
7         global $a, $db;
8
9         if(is_null($a)) {
10                 $a = new App;
11         }
12
13         if(is_null($db)) {
14             @include(".htconfig.php");
15         require_once("include/dba.php");
16             $db = new dba($db_host, $db_user, $db_pass, $db_data);
17         unset($db_host, $db_user, $db_pass, $db_data);
18         };
19
20         require_once('include/session.php');
21         require_once('include/datetime.php');
22         require_once('include/pidfile.php');
23
24         load_config('config');
25         load_config('system');
26
27         $maxsysload = intval(get_config('system','maxloadavg'));
28         if($maxsysload < 1)
29                 $maxsysload = 50;
30         if(function_exists('sys_getloadavg')) {
31                 $load = sys_getloadavg();
32                 if(intval($load[0]) > $maxsysload) {
33                         logger('system: load ' . $load . ' too high. Poller deferred to next scheduled run.');
34                         return;
35                 }
36         }
37
38         $lockpath = get_config('system','lockpath');
39         if ($lockpath != '') {
40                 $pidfile = new pidfile($lockpath, 'cron.lck');
41                 if($pidfile->is_already_running()) {
42                         logger("cronhooks: Already running");
43                         exit;
44                 }
45         }
46
47         $a->set_baseurl(get_config('system','url'));
48
49         load_hooks();
50
51         logger('cronhooks: start');
52
53         $d = datetime_convert();
54
55         set_time_limit(9*60*60); // Setting the maximum execution time for cronjobs to 9 minutes.
56
57         call_hooks('cron', $d);
58
59         logger('cronhooks: end');
60
61         return;
62 }
63
64 if (array_search(__file__,get_included_files())===0){
65   cronhooks_run($argv,$argc);
66   killme();
67 }