]> git.mxchange.org Git - friendica.git/commitdiff
Move the contact discovery into the background
authorMichael Vogel <icarus@dabo.de>
Sun, 26 Jul 2015 12:41:34 +0000 (14:41 +0200)
committerMichael Vogel <icarus@dabo.de>
Sun, 26 Jul 2015 12:41:34 +0000 (14:41 +0200)
include/discover_poco.php
include/poller.php
include/socgraph.php

index 7dbafcafdef9375430c6385df0dfcdb928e43ecd..68f483dab51f3a5eee603d3ef95e4c7443b60f42 100644 (file)
@@ -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);
index 44ac94daa489c2a35ccaa91d134dae9b73d39929..7cc1a285276222cd1d1e0c06472fef06865cc111 100644 (file)
@@ -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
index 0c78cfe2352457e23ae8170fcc752374d9442703..53763626d6b19429208a07df47d0236c96694c0e 100644 (file)
@@ -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'];