From fc5f3f480092f6c9d48db45230ed99ece97e5ccf Mon Sep 17 00:00:00 2001 From: friendica Date: Fri, 28 Mar 2014 15:58:58 -0700 Subject: externals/discover: try up to 3 times to find a site that actually has content. Then give up until the next queue run. --- include/externals.php | 77 +++++++++++++++++++++++++++------------------------ 1 file changed, 41 insertions(+), 36 deletions(-) (limited to 'include/externals.php') diff --git a/include/externals.php b/include/externals.php index 290f93a68..2ae78c11a 100644 --- a/include/externals.php +++ b/include/externals.php @@ -9,51 +9,56 @@ function externals_run($argv, $argc){ cli_startup(); $a = get_app(); + + $total = 0; + $attempts = 0; // pull in some public posts - $arr = array('url' => ''); - call_hooks('externals_url_select',$arr); - - if($arr['url']) { - $url = $arr['url']; - } - else { - $r = q("select site_url from site where site_url != '%s' and site_flags != %d order by rand() limit 1", - dbesc(z_root()), - intval(DIRECTORY_MODE_STANDALONE) - ); - if($r) - $url = $r[0]['site_url']; - } - if($url) { - logger('externals: pulling public content from ' . $url, LOGGER_DEBUG); - $days = get_config('externals','since_days'); - if($days === false) - $days = 15; - - $feedurl = $url . '/zotfeed?f=&mindate=' . urlencode(datetime_convert('','','now - ' . intval($days) . ' days')); - - logger('externals: pulling public content from ' . $feedurl, LOGGER_DEBUG); - $x = z_fetch_url($feedurl); - - if(($x) && ($x['success'])) { - $total = 0; - $j = json_decode($x['body'],true); - if($j['success'] && $j['messages']) { - $sys = get_sys_channel(); - foreach($j['messages'] as $message) { - $results = process_delivery(array('hash' => 'undefined'), get_item_elements($message), - array(array('hash' => $sys['xchan_hash'])), false, true); - $total ++; + while($total == 0 && $attempts < 3) { + $arr = array('url' => ''); + call_hooks('externals_url_select',$arr); + + if($arr['url']) { + $url = $arr['url']; + } + else { + $r = q("select site_url from site where site_url != '%s' and site_flags != %d order by rand() limit 1", + dbesc(z_root()), + intval(DIRECTORY_MODE_STANDALONE) + ); + if($r) + $url = $r[0]['site_url']; + } + + $attempts ++; + + if($url) { + $days = get_config('externals','since_days'); + if($days === false) + $days = 15; + + $feedurl = $url . '/zotfeed?f=&mindate=' . urlencode(datetime_convert('','','now - ' . intval($days) . ' days')); + + logger('externals: pulling public content from ' . $feedurl, LOGGER_DEBUG); + $x = z_fetch_url($feedurl); + + if(($x) && ($x['success'])) { + $j = json_decode($x['body'],true); + if($j['success'] && $j['messages']) { + $sys = get_sys_channel(); + foreach($j['messages'] as $message) { + $results = process_delivery(array('hash' => 'undefined'), get_item_elements($message), + array(array('hash' => $sys['xchan_hash'])), false, true); + $total ++; + } + logger('externals: import_public_posts: ' . $total . ' messages imported', LOGGER_DEBUG); } - logger('externals: import_public_posts: ' . $total . ' messages imported', LOGGER_DEBUG); } } } - } if (array_search(__file__,get_included_files())===0){ -- cgit v1.2.3