Move the contact discovery into the background
This commit is contained in:
parent
fc9c6e6bfd
commit
166519fc4d
3 changed files with 41 additions and 17 deletions
|
@ -38,23 +38,26 @@ function discover_poco_run(&$argv, &$argc){
|
|||
|
||||
if(($argc > 2) && ($argv[1] == "dirsearch")) {
|
||||
$search = urldecode($argv[2]);
|
||||
$searchmode = 1;
|
||||
$mode = 1;
|
||||
} elseif(($argc == 2) && ($argv[1] == "checkcontact")) {
|
||||
$mode = 2;
|
||||
} elseif ($argc == 1) {
|
||||
$search = "";
|
||||
$searchmode = 0;
|
||||
$mode = 0;
|
||||
} else
|
||||
die("Unknown or missing parameter ".$argv[1]."\n");
|
||||
|
||||
$lockpath = get_lockpath();
|
||||
if ($lockpath != '') {
|
||||
$pidfile = new pidfile($lockpath, 'discover_poco'.urlencode($search));
|
||||
$pidfile = new pidfile($lockpath, 'discover_poco'.$mode.urlencode($search));
|
||||
if($pidfile->is_already_running()) {
|
||||
logger("discover_poco: Already running");
|
||||
if ($pidfile->running_time() > 19*60) {
|
||||
$pidfile->kill();
|
||||
logger("discover_poco: killed stale process");
|
||||
// Calling a new instance
|
||||
proc_run('php','include/discover_poco.php');
|
||||
if ($mode == 0)
|
||||
proc_run('php','include/discover_poco.php');
|
||||
}
|
||||
exit;
|
||||
}
|
||||
|
@ -66,9 +69,11 @@ function discover_poco_run(&$argv, &$argc){
|
|||
|
||||
logger('start '.$search);
|
||||
|
||||
if (($search != "") and get_config('system','poco_local_search'))
|
||||
if (($mode == 2) AND get_config('system','poco_completion'))
|
||||
discover_users();
|
||||
elseif (($mode == 1) AND ($search != "") and get_config('system','poco_local_search'))
|
||||
discover_directory($search);
|
||||
elseif (($search == "") and get_config('system','poco_discovery') > 0)
|
||||
elseif (($mode == 0) AND ($search == "") and (get_config('system','poco_discovery') > 0))
|
||||
poco_discover();
|
||||
|
||||
logger('end '.$search);
|
||||
|
@ -76,6 +81,21 @@ function discover_poco_run(&$argv, &$argc){
|
|||
return;
|
||||
}
|
||||
|
||||
function discover_users() {
|
||||
$users = q("SELECT `url` FROM `gcontact` WHERE `updated` = '0000-00-00 00:00:00' AND
|
||||
`last_contact` = '0000-00-00 00:00:00' AND `last_failure` = '0000-00-00 00:00:00' AND
|
||||
`network` IN ('%s', '%s', '%s') ORDER BY rand() LIMIT 50",
|
||||
dbesc(NETWORK_DFRN), dbesc(NETWORK_DIASPORA), dbesc(NETWORK_OSTATUS));
|
||||
|
||||
if (!$users)
|
||||
return;
|
||||
|
||||
foreach ($users AS $user) {
|
||||
logger('Check user '.$user["url"]);
|
||||
poco_last_updated($user["url"]);
|
||||
}
|
||||
}
|
||||
|
||||
function discover_directory($search) {
|
||||
|
||||
$data = Cache::get("dirsearch:".$search);
|
||||
|
|
|
@ -86,6 +86,10 @@ function poller_run(&$argv, &$argc){
|
|||
|
||||
proc_run('php',"include/discover_poco.php");
|
||||
|
||||
// run the process to update locally stored global contacts in the background
|
||||
|
||||
proc_run('php',"include/discover_poco.php", "checkcontact");
|
||||
|
||||
// expire any expired accounts
|
||||
|
||||
q("UPDATE user SET `account_expired` = 1 where `account_expired` = 0
|
||||
|
|
|
@ -266,17 +266,17 @@ function poco_check($profile_url, $name, $network, $profile_photo, $about, $loca
|
|||
poco_check_server($server_url, $network);
|
||||
|
||||
// Fetch last update manually if it is enabled in the system
|
||||
if (get_config('system','poco_completion') AND ($orig_updated == "0000-00-00 00:00:00")
|
||||
AND poco_do_update($created, $updated, $last_failure, $last_contact)
|
||||
AND poco_reachable($profile_url, $server_url, $network)) {
|
||||
$last_updated = poco_last_updated($profile_url);
|
||||
if ($last_updated) {
|
||||
$updated = $last_updated;
|
||||
$last_contact = datetime_convert();
|
||||
logger("Last updated for profile ".$profile_url.": ".$updated, LOGGER_DEBUG);
|
||||
} else
|
||||
$last_failure = datetime_convert();
|
||||
}
|
||||
//if (get_config('system','poco_completion') AND ($orig_updated == "0000-00-00 00:00:00")
|
||||
// AND poco_do_update($created, $updated, $last_failure, $last_contact)
|
||||
// AND poco_reachable($profile_url, $server_url, $network)) {
|
||||
// $last_updated = poco_last_updated($profile_url);
|
||||
// if ($last_updated) {
|
||||
// $updated = $last_updated;
|
||||
// $last_contact = datetime_convert();
|
||||
// logger("Last updated for profile ".$profile_url.": ".$updated, LOGGER_DEBUG);
|
||||
// } else
|
||||
// $last_failure = datetime_convert();
|
||||
//}
|
||||
|
||||
if(count($x)) {
|
||||
$gcid = $x[0]['id'];
|
||||
|
|
Loading…
Reference in a new issue