]> git.mxchange.org Git - friendica.git/blobdiff - include/poller.php
New cache system with subdirectories
[friendica.git] / include / poller.php
index 0a0e66b865ec0445131a9301e1e064e3e16ff496..6f2eeed822b80f757adafaf269caac0c656ee91e 100644 (file)
@@ -3,7 +3,7 @@
 require_once("boot.php");
 
 
-function poller_run($argv, $argc){
+function poller_run(&$argv, &$argc){
        global $a, $db;
 
        if(is_null($a)) {
@@ -30,6 +30,17 @@ function poller_run($argv, $argc){
        load_config('config');
        load_config('system');
 
+       $maxsysload = intval(get_config('system','maxloadavg'));
+       if($maxsysload < 1)
+               $maxsysload = 50;
+       if(function_exists('sys_getloadavg')) {
+               $load = sys_getloadavg();
+               if(intval($load[0]) > $maxsysload) {
+                       logger('system: load ' . $load . ' too high. Poller deferred to next scheduled run.');
+                       return;
+               }
+       }
+
        $lockpath = get_config('system','lockpath');
        if ($lockpath != '') {
                $pidfile = new pidfile($lockpath, 'poller.lck');
@@ -39,6 +50,8 @@ function poller_run($argv, $argc){
                }
        }
 
+
+
        $a->set_baseurl(get_config('system','url'));
 
        load_hooks();
@@ -54,6 +67,16 @@ function poller_run($argv, $argc){
        q("UPDATE user SET `account_expired` = 1 where `account_expired` = 0 
                AND `account_expires_on` != '0000-00-00 00:00:00' 
                AND `account_expires_on` < UTC_TIMESTAMP() ");
+       
+       // delete user and contact records for recently removed accounts
+
+       $r = q("SELECT * FROM `user` WHERE `account_removed` = 1 AND `account_expires_on` < UTC_TIMESTAMP() - INTERVAL 3 DAY");
+       if ($r) {
+               foreach($r as $user) {
+                       q("DELETE FROM `contact` WHERE `uid` = %d", intval($user['uid']));
+                       q("DELETE FROM `user` WHERE `uid` = %d", intval($user['uid']));
+               }
+       }
   
        $abandon_days = intval(get_config('system','account_abandon_days'));
        if($abandon_days < 1)
@@ -79,18 +102,8 @@ function poller_run($argv, $argc){
        // clear old cache
        Cache::clear();
 
-       // clear item cache files if they are older than one day
-       $cache = get_config('system','itemcache');
-       if (($cache != '') and is_dir($cache)) {
-               if ($dh = opendir($cache)) {
-                       while (($file = readdir($dh)) !== false) {
-                               $fullpath = $cache."/".$file;
-                               if ((filetype($fullpath) == "file") and filectime($fullpath) < (time() - 86400))
-                                       unlink($fullpath);
-                       }
-                       closedir($dh);
-               }
-       }
+       // clear old item cache files
+       clear_cache();
 
        $manual_id  = 0;
        $generation = 0;
@@ -105,7 +118,7 @@ function poller_run($argv, $argc){
                $restart = true;
                $generation = intval($argv[2]);
                if(! $generation)
-                       killme();               
+                       killme();
        }
 
        if(($argc > 1) && intval($argv[1])) {
@@ -113,7 +126,9 @@ function poller_run($argv, $argc){
                $force     = true;
        }
 
-       $interval = ((get_config('system','delivery_interval') === false) ? 3 : intval(get_config('system','delivery_interval')));
+       $interval = intval(get_config('system','poll_interval'));
+       if(! $interval) 
+               $interval = ((get_config('system','delivery_interval') === false) ? 3 : intval(get_config('system','delivery_interval')));
 
        $sql_extra = (($manual_id) ? " AND `id` = $manual_id " : "");
 
@@ -139,7 +154,7 @@ function poller_run($argv, $argc){
                $sql_extra 
                AND `self` = 0 AND `contact`.`blocked` = 0 AND `contact`.`readonly` = 0 
                AND `contact`.`archive` = 0 
-               AND `user`.`account_expired` = 0 $abandon_sql ORDER BY RAND()",
+               AND `user`.`account_expired` = 0 AND `user`.`account_removed` = 0 $abandon_sql ORDER BY RAND()",
                intval(CONTACT_IS_SHARING),
                intval(CONTACT_IS_FRIEND),
                dbesc(NETWORK_DIASPORA),
@@ -186,8 +201,8 @@ function poller_run($argv, $argc){
 
 
                                if($contact['subhub']) {
-                                       $interval = get_config('system','pushpoll_frequency');
-                                       $contact['priority'] = (($interval !== false) ? intval($interval) : 3);
+                                       $poll_interval = get_config('system','pushpoll_frequency');
+                                       $contact['priority'] = (($poll_interval !== false) ? intval($poll_interval) : 3);
                                        $hub_update = false;
        
                                        if((datetime_convert('UTC','UTC', 'now') > datetime_convert('UTC','UTC', $t . " + 1 day")) || $force)