Changeset 31607 in spip-zone


Ignore:
Timestamp:
Sep 16, 2009, 8:20:16 AM (10 years ago)
Author:
cedric@…
Message:

traire des taches n'etait pas un bon principe et entrainait des bugs :p
On traite les taches correctement cette fois-ci et l'install se fait bien.
Le traitement de plusieurs taches dans un temps imparti fonctionne.
Il pourra etre judicieux d'adapter le temps alloue en fonction du mode d'appel de la tache cron.

Location:
_plugins_/job_queue
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/job_queue/base/queue.php

    r31593 r31607  
    6161
    6262function queue_vider_tables($nom_meta_base_version) {
     63        effacer_meta('queue_next_job_time');
    6364        effacer_meta($nom_meta_base_version);
    64         sql_drop("TABLE spip_jobs");
    65         ecrire_metas();
     65        sql_drop_table("spip_jobs");
    6666}
    6767
  • _plugins_/job_queue/inc/genie.php

    r31604 r31607  
    128128
    129129// Une tache cron pour surveiller les taches crons et les relancer si besoin
     130// quand ce cron s'execute, il n'est plus dans la queue, donc il se replanifie
     131// lui meme, avec last=time()
    130132function genie_queue_watch_dist(){
    131133        $taches = taches_generales();
    132134        foreach($taches as $tache=>$periode){
    133                 //queue_genie_replan_job($tache,$periode);
     135                queue_genie_replan_job($tache,$periode,time());
    134136        }
     137        return 1;
    135138}
    136139
     
    144147                if (is_null($last))
    145148                        $last = $time-$period;
     149                spip_log("replan_job $function $period $last $time $priority",'queue');
    146150                include_spip('inc/queue');
    147151                // on replanifie un job cron
  • _plugins_/job_queue/inc/queue.php

    r31604 r31607  
    9292function queue_start_job($row){
    9393
    94         // deserialiser les arguments
    95         $arguments = unserialize($arguments);
     94// deserialiser les arguments
     95        $arguments = unserialize($row['args']);
    9696        if ($arguments===false){
    9797                spip_log('arguments job errones '.var_export($row,true),'queue');
     
    132132
    133133        $max_time = ini_get('max_execution_time')/2;
     134        // valeur conservatrice si on a pas reussi a lire le max_execution_time
     135        if (!$max_time) $max_time=5;
     136        $max_time = min($max_time,15); // une valeur maxi en temps.
    134137
    135138        // attraper les jobs
     
    148151                                // on a la main sur le job :
    149152                                // l'executer
    150                                 $res = queue_start_job($row);
     153                                $result = queue_start_job($row);
    151154
    152155                                // est-ce une tache cron qu'il faut relancer ?
     
    154157                                        // relancer avec les nouveaux arguments de temps
    155158                                        include_spip('inc/genie');
    156                                         if ($res<0)
     159                                        if ($result<0)
    157160                                                // relancer tout de suite, mais en baissant la priorite
    158                                                 queue_genie_replan_job($row['fonction'],$periode,0-$res/*last*/,0/*ASAP*/,$row['priorite']-1);
     161                                                queue_genie_replan_job($row['fonction'],$periode,0-$result/*last*/,0/*ASAP*/,$row['priorite']-1);
    159162                                        else
    160163                                                // relancer avec la periode prevue
Note: See TracChangeset for help on using the changeset viewer.