Changeset 118122 in spip-zone


Ignore:
Timestamp:
Oct 13, 2019, 8:26:04 AM (6 months ago)
Author:
jluc@…
Message:

phpdoc + seulement les fonctions de debug natives + basta il faut fsockopen

Location:
_plugins_/accelerer_jobs/trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/accelerer_jobs/trunk/action/accelerer_jobs.php

    r115820 r118122  
    2323 * Executer une sélection de jobs immédiatement, sélectionnés par leur 'fonction'
    2424 *
     25 * @param string $args  parm de l'action
    2526 * @return void
    2627 */
  • _plugins_/accelerer_jobs/trunk/action/accelerer_jobs_async.php

    r115820 r118122  
    2424 * Url pour lancer l'accélération des jobs de manière asynchrone si le serveur le permet
    2525
     26 * @param string $args  parm de l'action
     27 *
    2628 * @see action_super_cron_dist() Dont une partie du code est repris ici avec le fix https://core.spip.net/issues/4345
    2729 * @see queue_affichage_cron() Dont une partie du code est repris ici.
     
    3537        list ($function, $nb) = explode ('/', $args);
    3638
    37         // Si fsockopen est possible, on lance le cron via un socket
    38         // en asynchrone
    39         if (function_exists('fsockopen')) {
    40                 $url = generer_url_action('accelerer_jobs');
     39        // on lance le cron via un socket en asynchrone avec fsockopen
     40        if (!function_exists('fsockopen')) {
     41                spip_log ('accelerer_mails_async : manque fsockopen', 'erreur_accelerer_mail');
     42                exit; // sinon faudrait lancer via un CURL asynchrone si CURL est présent
     43        }
    4144
    42                 // si nécessaire, pour être certain de régulièrement passer un cache agressif (varnish ou autre)
    43                 // _SUPER_CRON_DELAIS vaut 1 ou le délai mini en sec. avec lequel on veut s'assurer d'outrepercer les caches
    44                 if (defined('_SUPER_CRON_DELAIS')) {
    45                         $t = intval(time()/_SUPER_CRON_DELAIS);
    46                         $url = parametre_url($url, 't', $t);
     45        $url = generer_url_action('accelerer_jobs');
     46
     47        // si nécessaire, pour être certain de régulièrement passer un cache agressif (varnish ou autre)
     48        // _SUPER_CRON_DELAIS vaut 1 ou le délai mini en sec. avec lequel on veut s'assurer d'outrepercer les caches
     49        if (defined('_SUPER_CRON_DELAIS')) {
     50                $t = intval(time()/_SUPER_CRON_DELAIS);
     51                $url = parametre_url($url, 't', $t);
     52        }
     53
     54        spip_log("accelerer_jobs_async fsockopen url $url", 'accelerer_jobs');
     55        $parts = parse_url($url);
     56
     57        $host_protocol = '';
     58        if (substr($url, 0, 5) == 'https') {
     59                if (empty($parts['port'])) {
     60                        $parts['port'] = 443;
    4761                }
     62                $host_protocol = 'ssl://';
     63        }
     64        elseif (empty($parts['port'])) {
     65                $parts['port'] = 80;
     66        }
    4867
    49                 debug_log("accelerer_jobs_async fsockopen url $url", 'accelerer_jobs');
    50                 $parts = parse_url($url);
     68        $fp = fsockopen(
     69                $host_protocol.$parts['host'],
     70                $parts['port'],
     71                $errno,
     72                $errstr,
     73                30
     74        );
     75        if ($fp) {
     76                $out = 'GET ' . $parts['path'] . '?' . $parts['query'] . " HTTP/1.1\r\n";
     77                $out .= 'Host: ' . $parts['host'] . "\r\n";
     78                $out .= "Connection: Close\r\n\r\n";
     79                fwrite($fp, $out);
    5180
    52                 $host_protocol = '';
    53                 if (substr($url, 0, 5) == 'https') {
    54                         if (empty($parts['port'])) {
    55                                 $parts['port'] = 443;
    56                         }
    57                         $host_protocol = 'ssl://';
     81                $response = fgets($fp, 4096);
     82                $statut = substr($response, 9, 3);
     83                // Généralement 204 : OK + pas de retour et rien à faire
     84                spip_log ("Statut '$statut' pour fsockopen $url", 'accelerer_jobs');
     85                if (substr ($response, 9, 1) != '2') {
     86                        spip_log ("Statut '$statut' pour fsockopen $url\n$response...", 'erreur_accelerer_jobs');
    5887                }
    59                 elseif (empty($parts['port'])) {
    60                         $parts['port'] = 80;
    61                 }
    62 
    63                 $fp = fsockopen(
    64                         $host_protocol.$parts['host'],
    65                         $parts['port'],
    66                         $errno,
    67                         $errstr,
    68                         30
    69                 );
    70                 if ($fp) {
    71                         $out = 'GET ' . $parts['path'] . '?' . $parts['query'] . " HTTP/1.1\r\n";
    72                         $out .= 'Host: ' . $parts['host'] . "\r\n";
    73                         $out .= "Connection: Close\r\n\r\n";
    74                         fwrite($fp, $out);
    75 
    76                         # debug_log($out, 'accelerer_jobs');
    77 
    78                         $response = fgets($fp, 4096);
    79                         $statut = substr($response, 9, 3);
    80                         debug_log ("Statut $statut pour fsockopen $url", 'accelerer_jobs');
    81                         if (substr($response, 9, 1) != '2')
    82                                 debug_log("Statut $statut pour fsockopen $url\n$response...", 'erreur_accelerer_jobs');
    83 
    84                         fclose($fp);
    85                         return;
    86                 } else {
    87                         spip_log("accelerer_jobs_async pour $url - pas pu fsockopen ".$host_protocol.$parts['host']." : errno=$errno errstr=$errstr ", 'erreur_accelerer_jobs');
    88                 }
     88                fclose($fp);
     89                return;
    8990        } else {
    90                 spip_log('accelerer_jobs_async : manque fsockopen', 'erreur_accelerer_jobs');
     91                spip_log("echec fsockopen pour accelerer_jobs_async pour $url - ".$host_protocol.$parts['host']." : errno=$errno errstr=$errstr ", 'erreur_accelerer_jobs');
    9192        }
    92         // ici lancer le cron par un CURL asynchrone si CURL est présent
    93         // TBD
    94 
    9593        return;
    9694}
  • _plugins_/accelerer_jobs/trunk/paquet.xml

    r115615 r118122  
    22        prefix="accelerer_jobs"
    33        categorie="performance"
    4         version="0.2.0"
     4        version="0.2.1"
    55        etat="test"
    66        compatibilite="[3.0.0;3.3.*]"
Note: See TracChangeset for help on using the changeset viewer.