- foreach($res as $contact) {
-
- $xml = false;
-
- if($manual_id)
- $contact['last-update'] = '0000-00-00 00:00:00';
-
- if($contact['network'] === NETWORK_DFRN)
- $contact['priority'] = 2;
-
- if(!get_config('system','ostatus_use_priority') and ($contact['network'] === NETWORK_OSTATUS))
- $contact['priority'] = 2;
-
- if($contact['priority'] || $contact['subhub']) {
-
- $hub_update = true;
- $update = false;
-
- $t = $contact['last-update'];
-
- // We should be getting everything via a hub. But just to be sure, let's check once a day.
- // (You can make this more or less frequent if desired by setting 'pushpoll_frequency' appropriately)
- // This also lets us update our subscription to the hub, and add or replace hubs in case it
- // changed. We will only update hubs once a day, regardless of 'pushpoll_frequency'.
-
-
- if($contact['subhub']) {
- $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)
- $hub_update = true;
- }
- else
- $hub_update = false;
-
- /**
- * Based on $contact['priority'], should we poll this site now? Or later?
- */
-
- switch ($contact['priority']) {
- case 5:
- if(datetime_convert('UTC','UTC', 'now') > datetime_convert('UTC','UTC', $t . " + 1 month"))
- $update = true;
- break;
- case 4:
- if(datetime_convert('UTC','UTC', 'now') > datetime_convert('UTC','UTC', $t . " + 1 week"))
- $update = true;
- break;
- case 3:
- if(datetime_convert('UTC','UTC', 'now') > datetime_convert('UTC','UTC', $t . " + 1 day"))
- $update = true;
- break;
- case 2:
- if(datetime_convert('UTC','UTC', 'now') > datetime_convert('UTC','UTC', $t . " + 12 hour"))
- $update = true;
- break;
- case 1:
- default:
- if(datetime_convert('UTC','UTC', 'now') > datetime_convert('UTC','UTC', $t . " + 1 hour"))
- $update = true;
- break;
- }
- if((! $update) && (! $force))
- continue;
- }
+ $maxworkers = $queues;
+
+ // Some magical mathemathics to reduce the workers
+ $exponent = 3;
+ $slope = $maxworkers / pow($maxsysload, $exponent);
+ $queues = ceil($slope * pow(max(0, $maxsysload - $load), $exponent));
+
+ logger("Current load stage ".$stage.": ".$load." - maximum: ".$maxsysload." - current queues: ".$active." - maximum: ".$queues, LOGGER_DEBUG);