Ajout script génération tables en cache

This commit is contained in:
Michael RICOIS 2011-01-03 10:29:26 +00:00
parent ae025df514
commit 253b15634f

138
batch/setCacheTables.php Normal file
View File

@ -0,0 +1,138 @@
#!/usr/bin/php
<?php
ini_set('memory_limit', '1024M');
error_reporting(E_ALL & ~E_NOTICE);
// Define path to application directory
defined('APPLICATION_PATH')
|| define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/../application'));
// Define application environment
defined('APPLICATION_ENV')
|| define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'production'));
// Ensure library/ is on include_path
set_include_path(implode(PATH_SEPARATOR, array(
realpath(APPLICATION_PATH . '/../library'),
get_include_path(),
)));
function wsLog() {}
require_once realpath(dirname(__FILE__)).'/../config/config.php';
require_once 'framework/fwk.php';
require_once 'framework/common/chiffres.php';
require_once 'framework/common/dates.php';
require_once 'framework/mail/sendMail.php';
require_once 'Metier/insee/classMInsee.php';
require_once 'Metier/scores/classMRegression.php';
//include_once('/var/www/html/ws2/WsEntreprise.php');
$strInfoScript='Usage : '.basename($argv[0]). " <option> [FICHIERS]
Génération du cache des variables courantes si nécessaire.
Options :
-d Mode debug (Verbosité au maximum)
-f Forcer la re-Génération du cache
";
$modeDebug=$modeGeneration=false;
$argv=$_SERVER['argv'];
for ($i=1,$j=0; isset($argv[$i]); $i++) {
if (substr($argv[$i],0,1)=='-') {
switch (substr($argv[$i],1,1)) {
case 'd': $modeDebug=true; break;
case 'f': $modeGeneration=true; break;
case '-':
case '?': die($strInfoScript); break;
default: die('Option '. $argv[$i] . ' inconnue !'.EOL); break;
}
}
}
$iDb=new WDB();
global $tabVariables;
$tdeb=microtime(true);
if (!$modeGeneration &&
file_exists(DOC_WEB_LOCAL.'tables/tables.bin') &&
file_exists(DOC_WEB_LOCAL.'tables/tables.ini') &&
filemtime(DOC_WEB_LOCAL.'tables/tables.bin')>filemtime(DOC_WEB_LOCAL.'tables/tables.ini')) {
if ($modeDebug) echo date('Y/m/d - H:i:s') ." - Lecture du cache...".EOL;
$tabVariables=unserialize(file_get_contents(DOC_WEB_LOCAL.'tables/tables.bin'));
$nb=count($tabVariables);
$duree=round((microtime(true)-$tdeb)*1000,1);
if ($modeDebug) {
$tailleM=round(memory_get_usage(true)/1024,1);
$tailleF=round(filesize(DOC_WEB_LOCAL.'tables/tables.bin')/1024,1);
$strFin=" (bin=$tailleF Ko, mem=$tailleM Ko).";
} else
$strFin='.';
echo date('Y/m/d - H:i:s') ." - Lecture du cache en $duree ms : $nb variables$strFin".EOL;
} else {
// Analyse avec les sections
$ini_array = parse_ini_file(DOC_WEB_LOCAL.'tables/tables.ini', TRUE);
$tabVariables=array();
foreach ($ini_array as $idVar => $tabVar) {
$idVar=strtoupper($idVar); // Nom= de la variable
$source=trim(strtoupper($tabVar['source']));
if ($modeDebug) echo date('Y/m/d - H:i:s') ." - [$idVar] Source='$source'...".EOL;
switch ($source) {
case 'SQL':
if (!isset($tabVar['sql'])) die("ERREUR : Requête SQL non définie pour [$idVar]");
$nbRecords=$iDb->query($tabVar['sql']);
if ($iDb->getLastErrorNum()>0) die("ERREUR : Requête SQL non fonctionnelle pour [$idVar] (".$iDb->getLastError().')');
if ($modeDebug) echo date('Y/m/d - H:i:s') ." - [$idVar] Source='$source' SQL: $nbRecords enregistrements...".EOL;
while ($ret=$iDb->fetch(MYSQL_ASSOC)) {
// Traitement de la zone libelle
if (strtoupper($ret['libelleCase'])=='MAJ')
$libelle=trim(ucfirst(strtolower($ret['libelle'])));
else
$libelle=trim($ret['libelle']);
// Traitement de la zone article
$article=trim($ret['article']);
if ($article=='') {
if (isset($tabVar['articles']) && strtolower($tabVar['articles'])=='auto') {
if (preg_match('/^(a|e|i|o|u|y)/i', $libelle))
$article='d\''.$libelle;
else
$article='de '.$libelle;
} else
$article=$libelle;
} elseif (preg_match('/^(.*)\$/', $article, $matches)) // en $
{ $article=trim(preg_replace('/ +/',' ', $matches[1].' '.$libelle));
$article=strtr($article, array("' "=>"'"));
}
$tabVariables[$idVar][trim($ret['code'])]=array('lib'=>$libelle,
'art'=>$article,
);
}
break;
default: // si <> de blanc, recopie de tableau existant
if ($source=='') die("ERREUR : Source non renseignée pour [$idVar]");
if (!isset($tabVariables[$source])) die("ERREUR : Source '$source' inexistante pour [$idVar]");
$tabVariables[$idVar]=$tabVariables[$source];
break;
}
}
$nb=count($tabVariables);
$duree=round((microtime(true)-$tdeb)*1000,1);
echo date('Y/m/d - H:i:s') ." - Génération du cache en $duree ms : $nb variables.".EOL;
if ($modeDebug) {
$tailleM=round(memory_get_usage(true)/1024,1);
$tailleF=round(filesize(DOC_WEB_LOCAL.'tables/tables.bin')/1024,1);
$strFin=" (bin=$tailleF Ko, mem=$tailleM Ko).";
} else
$strFin='.';
if (file_put_contents(DOC_WEB_LOCAL.'tables/tables.bin',serialize($tabVariables)))
echo date('Y/m/d - H:i:s') ." - Cache des tables associées généré$strFin".EOL;
}
die();
?>