#!/usr/bin/php [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(); $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(); ?>