diff --git a/twitter/twitter.php b/twitter/twitter.php index 934b8d3c..0f074ba3 100644 --- a/twitter/twitter.php +++ b/twitter/twitter.php @@ -625,7 +625,12 @@ function twitter_cron($a,$b) { if(count($r)) { foreach($r as $rr) { logger('twitter: fetching for user '.$rr['uid']); - twitter_fetchtimeline($a, $rr['uid']); + + if (get_config("system", "worker")) { + proc_run(PRIORITY_MEDIUM, "addon/twitter/twitter_sync.php", 1, $rr['uid']); + } else { + twitter_fetchtimeline($a, $rr['uid']); + } } } @@ -647,8 +652,12 @@ function twitter_cron($a,$b) { } logger('twitter: importing timeline from user '.$rr['uid']); - twitter_fetchhometimeline($a, $rr["uid"]); + if (get_config("system", "worker")) { + proc_run(PRIORITY_MEDIUM, "addon/twitter/twitter_sync.php", 2, $rr['uid']); + } else { + twitter_fetchhometimeline($a, $rr["uid"]); + } /* // To-Do // check for new contacts once a day diff --git a/twitter/twitter_sync.php b/twitter/twitter_sync.php new file mode 100644 index 00000000..e8987f8f --- /dev/null +++ b/twitter/twitter_sync.php @@ -0,0 +1,78 @@ + $maxsysload) { + logger('system: load ' . $load[0] . ' too high. Twitter sync deferred to next scheduled run.'); + return; + } + } + + if ($argc < 3) { + return; + } + + $mode = intval($argv[1]); + $uid = intval($argv[2]); + + /// @todo Replace it with "App::is_already_running" in the next release + $lockpath = get_lockpath(); + if ($lockpath != '') { + $pidfile = new pidfile($lockpath, 'twitter_sync-'.$mode.'-'.$uid); + if($pidfile->is_already_running()) { + logger("Already running"); + if ($pidfile->running_time() > 9*60) { + $pidfile->kill(); + logger("killed stale process"); + // Calling a new instance + proc_run('php','addon/twitter/twitter_sync.php', $mode, $uid); + } + exit; + } + } + + if ($mode == 1) { + twitter_fetchtimeline($a, $uid); + } elseif ($mode == 2) { + twitter_fetchhometimeline($a, $uid); + } +} + +if (array_search(__file__,get_included_files())===0){ + twitter_sync_run($_SERVER["argv"],$_SERVER["argc"]); + killme(); +} +?>