Changeset 1139

Show
Ignore:
Timestamp:
06/10/07 22:23:32 (1 year ago)
Author:
sven
Message:

explodeping: back off if it's not working, so php doesn't sit there waiting for godot

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • devel/mod/explodeping/lib.php

    r1086 r1139  
    2323         if (!$explodeservice = get_record('datalists', 'name', 'explodeservice')) { 
    2424              
     25             ini_set('default_socket_timeout', 20); 
     26              
    2527             $pingvars = "pingtype=registernew"; 
    2628             $pingvars .= "&url=" . urlencode($CFG->wwwroot); 
     
    2830             $pingvars .= "&name=" . urlencode($CFG->sitename); 
    2931             $pingvars .= "&rssurl=" . urlencode($CFG->wwwroot . "%username%/rss"); 
    30              $pingvars .= "&foafurl=" . urlencode($CFG->wwwroot . "%username%/foaf");              
     32             $pingvars .= "&foafurl=" . urlencode($CFG->wwwroot . "%username%/foaf"); 
    3133             $pingresponse = file_get_contents("http://ex.plode.us/mod/searchping/elggping.php?{$pingvars}"); 
    3234              
     
    4850              
    4951             $explodelastpinged = get_record('datalists', 'name', 'explodelastpinged'); 
    50              if (!$explodelastpinged || $explodelastpinged->value < (time() - (86400* 7))) { 
     52             $triggertime = time() - (86400* 7); 
     53             if (!$explodelastpinged || $explodelastpinged->value < $triggertime) { 
    5154                  
    52                  $search_sql = "SELECT u.ident, u.username, COUNT(m.ident) AS members FROM `".$CFG->prefix."users` u JOIN ".$CFG->prefix."friends m ON m.owner = u.ident WHERE u.user_type = 'person' GROUP BY u.ident ORDER BY members DESC LIMIT 1"; 
    53                  if ($users = get_records_sql($search_sql)) { 
    54  
    55                      foreach($users as $user) { 
    56                          $username = $user->username; 
    57                           
    58                          $explodeservice = get_record_sql("select * from {$CFG->prefix}datalists where name = 'explodeservice'"); // ('datalists', 'name', 'explodeservice'); 
    59                          $explodeservice = unserialize($explodeservice->value); 
    60                          $crypt_reping = sha1($explodeservice->ident . ":" . $username . ":" . $explodeservice->secretkey); 
    61                           
    62                          $pingvars = "pingtype=reping"; 
    63                          $pingvars .= "&service=" . urlencode($explodeservice->ident); 
    64                          $pingvars .= "&crypt=" . urlencode($crypt_reping); 
    65                          $pingvars .= "&username=" . urlencode($username); 
    66  
    67                          $response = file_get_contents("http://ex.plode.us/mod/searchping/elggping.php?{$pingvars}"); 
    68                     } 
    69  
    70                  } 
    71                   
     55                 //reduce likelihood of concurrent pings on a stall 
    7256                 delete_records('datalists','name','explodelastpinged'); 
    7357                 $datalist = new stdClass; 
    7458                 $datalist->name = 'explodelastpinged'; 
    75                  $datalist->value = time()
     59                 $datalist->value = $triggertime + 600
    7660                 insert_record('datalists',$datalist); 
     61                 ini_set('default_socket_timeout', 20); 
    7762                  
     63                 //don't do anything if initial connect doesn't work 
     64                 $testresponse = file_get_contents("http://ex.plode.us/mod/searchping/elggping.php"); 
     65                 if ($testresponse !== false) { 
     66                      
     67                     $search_sql = "SELECT u.ident, u.username, COUNT(m.ident) AS members FROM `".$CFG->prefix."users` u JOIN ".$CFG->prefix."friends m ON m.owner = u.ident WHERE u.user_type = 'person' GROUP BY u.ident ORDER BY members DESC LIMIT 1"; 
     68                     if ($users = get_records_sql($search_sql)) { 
     69                          
     70                         foreach($users as $user) { 
     71                             $username = $user->username; 
     72                              
     73                             $explodeservice = get_record_sql("select * from {$CFG->prefix}datalists where name = 'explodeservice'"); // ('datalists', 'name', 'explodeservice'); 
     74                             $explodeservice = unserialize($explodeservice->value); 
     75                             $crypt_reping = sha1($explodeservice->ident . ":" . $username . ":" . $explodeservice->secretkey); 
     76                              
     77                             $pingvars = "pingtype=reping"; 
     78                             $pingvars .= "&service=" . urlencode($explodeservice->ident); 
     79                             $pingvars .= "&crypt=" . urlencode($crypt_reping); 
     80                             $pingvars .= "&username=" . urlencode($username); 
     81                              
     82                             $response = file_get_contents("http://ex.plode.us/mod/searchping/elggping.php?{$pingvars}"); 
     83                        } 
     84                         
     85                     } 
     86                      
     87                     delete_records('datalists','name','explodelastpinged'); 
     88                     $datalist = new stdClass; 
     89                     $datalist->name = 'explodelastpinged'; 
     90                     $datalist->value = time(); 
     91                     insert_record('datalists',$datalist); 
     92                      
     93                 } 
    7894             } 
    7995