Changeset 39423 in spip-zone for _plugins_/job_queue/base/queue.php


Ignore:
Timestamp:
Jul 21, 2010, 11:32:08 AM (10 years ago)
Author:
cedric@…
Message:

optimisation : passer le champ status en int avec un index pour accelerer les traitements et eviter les slow queries

File:
1 edited

Legend:

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

    r38162 r39423  
    2929                "priorite"      => "smallint(6) NOT NULL default 0",
    3030                "date" => "datetime DEFAULT '0000-00-00 00:00:00' NOT NULL", // date au plus tot
    31                 "status" => "varchar(15) NOT NULL default 'scheduled'",
     31                "status" => "tinyint NOT NULL default 1",
    3232                );
    3333
     
    9696                        ecrire_meta($nom_meta_base_version,$current_version="0.3.2",'non');
    9797                }
     98                if (version_compare($current_version,"0.3.3",'<')){
     99                        include_spip('inc/queue'); // define _JQ_PENDING
     100                        // virer d'abord l'index existant
     101                        sql_alter("table spip_jobs drop index status");
     102                        // ne pas refaire un update si la migration a deja eu lieu
     103                        if (!sql_countsel('spip_jobs', 'status=1')){
     104                                // renommer le champ le temps de la migration
     105                                sql_alter("table spip_jobs change status status_old varchar(15) NOT NULL default 'scheduled'");
     106                                // ajouter le nouveau status avec un nom provisoire
     107                                sql_alter("table spip_jobs add status_new tinyint NOT NULL default 1");
     108                                // synchroniser les deux status
     109                                sql_update('spip_jobs',array('status_new'=>intval(_JQ_PENDING)),"status_old='pending'");
     110                        }
     111                        // renommer le status
     112                        sql_alter("table spip_jobs change status_new status tinyint NOT NULL default 1");
     113                        // placer un index dessus
     114                        sql_alter("table spip_jobs add index status (status)");
     115                        // virer le vieux status
     116                        sql_alter("table spip_jobs drop status_old");
     117                        ecrire_meta($nom_meta_base_version,$current_version="0.3.3",'non');
     118                }
    98119
    99120        }
Note: See TracChangeset for help on using the changeset viewer.