allow polling to mostly survive minor memory shortages.
This commit is contained in:
parent
84ee783a2a
commit
481cd708ac
|
@ -376,9 +376,12 @@ function facebook_cron($a,$b) {
|
||||||
|
|
||||||
logger('facebook_cron');
|
logger('facebook_cron');
|
||||||
|
|
||||||
set_config('facebook','last_poll', time());
|
|
||||||
|
|
||||||
$r = q("SELECT * FROM `pconfig` WHERE `cat` = 'facebook' AND `k` = 'post' AND `v` = '1' ");
|
// Find the FB users on this site and randomize in case one of them
|
||||||
|
// uses an obscene amount of memory. It may kill this queue run
|
||||||
|
// but hopefully we'll get a few others through on each run.
|
||||||
|
|
||||||
|
$r = q("SELECT * FROM `pconfig` WHERE `cat` = 'facebook' AND `k` = 'post' AND `v` = '1' ORDER BY RAND() ");
|
||||||
if(count($r)) {
|
if(count($r)) {
|
||||||
foreach($r as $rr) {
|
foreach($r as $rr) {
|
||||||
// check for new friends once a day
|
// check for new friends once a day
|
||||||
|
@ -392,6 +395,9 @@ function facebook_cron($a,$b) {
|
||||||
fb_consume_all($rr['uid']);
|
fb_consume_all($rr['uid']);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
set_config('facebook','last_poll', time());
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
12
boot.php
12
boot.php
|
@ -2908,3 +2908,15 @@ function get_plugin_info($plugin){
|
||||||
}
|
}
|
||||||
return $info;
|
return $info;
|
||||||
}}
|
}}
|
||||||
|
|
||||||
|
if(! function_exists('return_bytes')) {
|
||||||
|
function return_bytes ($size_str) {
|
||||||
|
switch (substr ($size_str, -1))
|
||||||
|
{
|
||||||
|
case 'M': case 'm': return (int)$size_str * 1048576;
|
||||||
|
case 'K': case 'k': return (int)$size_str * 1024;
|
||||||
|
case 'G': case 'g': return (int)$size_str * 1073741824;
|
||||||
|
default: return $size_str;
|
||||||
|
}
|
||||||
|
}}
|
||||||
|
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
|
|
||||||
require_once("boot.php");
|
require_once("boot.php");
|
||||||
|
|
||||||
|
|
||||||
function poller_run($argv, $argc){
|
function poller_run($argv, $argc){
|
||||||
global $a, $db;
|
global $a, $db;
|
||||||
|
|
||||||
|
@ -47,18 +48,26 @@ function poller_run($argv, $argc){
|
||||||
proc_run('php','include/expire.php');
|
proc_run('php','include/expire.php');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// clear old cache
|
// clear old cache
|
||||||
q("DELETE FROM `cache` WHERE `updated` < '%s'",
|
q("DELETE FROM `cache` WHERE `updated` < '%s'",
|
||||||
dbesc(datetime_convert('UTC','UTC',"now - 30 days")));
|
dbesc(datetime_convert('UTC','UTC',"now - 30 days")));
|
||||||
|
|
||||||
$manual_id = 0;
|
$manual_id = 0;
|
||||||
|
$generation = 0;
|
||||||
$hub_update = false;
|
$hub_update = false;
|
||||||
$force = false;
|
$force = false;
|
||||||
|
$restart = false;
|
||||||
|
|
||||||
if(($argc > 1) && ($argv[1] == 'force'))
|
if(($argc > 1) && ($argv[1] == 'force'))
|
||||||
$force = true;
|
$force = true;
|
||||||
|
|
||||||
|
if(($argc > 1) && ($argv[1] == 'restart')) {
|
||||||
|
$restart = true;
|
||||||
|
$generation = intval($argv[2]);
|
||||||
|
if(! $generation)
|
||||||
|
killme();
|
||||||
|
}
|
||||||
|
|
||||||
if(($argc > 1) && intval($argv[1])) {
|
if(($argc > 1) && intval($argv[1])) {
|
||||||
$manual_id = intval($argv[1]);
|
$manual_id = intval($argv[1]);
|
||||||
$force = true;
|
$force = true;
|
||||||
|
@ -70,7 +79,8 @@ function poller_run($argv, $argc){
|
||||||
|
|
||||||
$d = datetime_convert();
|
$d = datetime_convert();
|
||||||
|
|
||||||
call_hooks('cron', $d);
|
if(! $restart)
|
||||||
|
call_hooks('cron', $d);
|
||||||
|
|
||||||
|
|
||||||
$contacts = q("SELECT `id` FROM `contact`
|
$contacts = q("SELECT `id` FROM `contact`
|
||||||
|
@ -95,7 +105,7 @@ function poller_run($argv, $argc){
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
foreach($res as $contact) {
|
foreach($res as $contact) {
|
||||||
|
logger('processing a contact');
|
||||||
$xml = false;
|
$xml = false;
|
||||||
|
|
||||||
if($manual_id)
|
if($manual_id)
|
||||||
|
@ -154,6 +164,22 @@ function poller_run($argv, $argc){
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Check to see if we are running out of memory - if so spawn a new process and kill this one
|
||||||
|
|
||||||
|
$avail_memory = return_bytes(ini_get('memory_limit'));
|
||||||
|
$memused = memory_get_peak_usage(true);
|
||||||
|
if(intval($avail_memory)) {
|
||||||
|
if(($memused / $avail_memory) > 0.95) {
|
||||||
|
if($generation + 1 > 10) {
|
||||||
|
logger('poller: maximum number of spawns exceeded. Terminating.');
|
||||||
|
killme();
|
||||||
|
}
|
||||||
|
logger('poller: memory exceeded. ' . $memused . ' bytes used. Spawning new poll.');
|
||||||
|
proc_run('php', 'include/poller.php', 'restart', (string) $generation + 1);
|
||||||
|
killme();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
$importer_uid = $contact['uid'];
|
$importer_uid = $contact['uid'];
|
||||||
|
|
||||||
$r = q("SELECT * FROM `contact` WHERE `uid` = %d AND `self` = 1 LIMIT 1",
|
$r = q("SELECT * FROM `contact` WHERE `uid` = %d AND `self` = 1 LIMIT 1",
|
||||||
|
|
Loading…
Reference in a new issue