batch/1.1/old/getMarques.php
2012-10-16 07:44:31 +00:00

235 lines
7.0 KiB
PHP

#!/usr/bin/php -c/var/www/batch/config/php_batch_sd.ini
<?php
include_once(FWK_PATH.'common/chiffres.php');
include_once(FWK_PATH.'common/dates.php');
include_once(FWK_PATH.'common/ftp.php');
include_once(INCLUDE_PATH.'insee/classMInsee.php');
include_once(INCLUDE_PATH.'partenaires/classMMarques.php');
include_once(FWK_PATH.'mail/sendMail.php');
$strInfoScript='Usage : '.basename($argv[0]). " [OPTIONS] marques1 marques2 ...
Téléchargement et mise à jour de Marques
Options:
-v Mode verbose ou debug
-f Forcer la mise à jour depuis Qualibat
-m Retourne le dernier numéro Qualibat en base
-i Les paramètres sont des numéros de marques
-r Les paramètres sont des Raisons Sociales
-p Récupère les PDF non encore en base
-b Mise à jour des marques issues des PDF
(*): Valeur par défaut !
";
$iMarque=new MMarques();
$modeDebug=$force=$max=$annee=$majNum=$majNom=$majObj=$getPdf=$getMBopi=false;
$tabMarques=array();
$argv=$_SERVER['argv'];
if ($_SERVER['argc']>1)
{
for ($i=1; isset($argv[$i]); $i++) {
if (substr($argv[$i],0,1)=='-') {
switch (substr($argv[$i],1,1)) {
case 'v': $modeDebug=true;
define('TMIN',1);
define('TMAX',2);
break;
case 'f': $force=true; break;
case 'm': $max=true;
$annee=substr($argv[$i],3); break;
case 'i': $majNum=true; break;
case 'r': $majNom=true; break;
case 'r': $majObj=true; break;
case 'p': $getPdf=true; break;
case 'b': $getMBopi=true; break;
case '-':
case '?': die($strInfoScript); break;
default: die('Option '. $argv[$i] . " inconnue !\n");
break;
}
} else {
$tabMarques[]=$argv[$i];
}
}
}
/*
if (!defined('TMIN')) define('TMIN',31);
if (!defined('TMAX')) define('TMAX',160);
if (!defined('TMIN')) define('TMIN',21);
if (!defined('TMAX')) define('TMAX',60);
*/
if (!defined('TMIN')) define('TMIN',10);
if (!defined('TMAX')) define('TMAX',20);
$iDb=new WDB('bopi');
if ($getPdf) {
$ret=$iDb->select( 'infos_bopi',
'MAX(nomPdf) as nomPdf',
'1', false, MYSQL_ASSOC);
$ret=$ret[0];
$pdf=$ret['nomPdf'];
echo date('Y/m/d - H:i:s')." - Dernier BOPI Marques téléchargé : $pdf...".EOL;
$anneeMois=strtr($pdf, array('bopi_marques_'=>'', 'v1'=>'', 'v2'=>'', '.pdf'=>''));
$tabAnneeMois=explode('-', $anneeMois);
$lastAnnee=$tabAnneeMois[0];
$numFin =$tabAnneeMois[1];
for ($annee=$lastAnnee; $annee<=date('Y'); $annee++) {
if ($annee==date('Y')) {
$numDeb=$lastMois;
$numFin=date('W');
//echo 'A'.EOL;
} elseif ($numFin==52 && $annee+1==date('Y')) {
$annee++;
$numDeb=1;
$numFin=date('W');
//echo 'B'.EOL;
} else {
$numDeb=1;
$numFin=52;
//echo 'C'.EOL;
}
//die($annee.EOL.$lastAnnee.EOL.date('Y').EOL.$numDeb.EOL.$numFin.EOL);
for ($num=$numDeb; $num<=$numFin; $num++) {
$taille=$iMarque->getEditionPdf('marques', $annee, $num);
$taille=round($taille/(1024*1024),2);
echo date('Y/m/d - H:i:s')." - BOPI $annee-$num : $taille Mo.".EOL;
}
}
}
if ($getMBopi) {
$ret=$iDb->select( 'infos_bopi_marques',
'DISTINCT numeroMarque',
'dateRecup IS NULL OR nbResults IS NULL OR nbResults<1', false, MYSQL_ASSOC);
foreach ($ret as $i=>$tabTmp)
$tabMarques[]=$tabTmp['numeroMarque'];
shuffle($tabMarques);
$majNum=true;
}
$nb=count($tabMarques);
$nbAcces=$nbCache=0;
foreach ($tabMarques as $i=>$marque) {
if ($majNum) {
echo date('Y/m/d - H:i:s')." - Marque $i/$nb : n°$marque... ";
$ret=$iMarque->getMarques(0, $marque);
if (is_array($ret) && count($ret)>0) {
print_r($ret);
$nbCache++;
} else {
$res=$iMarque->getListeMarques($marque, '', '', true);
if ($getMBopi) {
$iDb->update( 'infos_bopi_marques',
array('dateRecup'=>date('Ymd'),
'nbResults'=>$res),
"numeroMarque=$marque", false);
$nbAcces++;
randsleep(TMIN,TMAX);
if (!$modeDebug && date('Hi')*1>1930) {
$nbTot=$nbAcces+$nbCache;
$pct=@round($nbCache/$nbTot*100,2);
@sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', "Pompe Marques - Traitement quotidien", "$nbTot requêtes traitées dont $nbCache en cache ($pct %)");
die();
}
}
}
}
elseif ($majNom)
$iMarque->getListeMarques('', $marque, '', true);
elseif ($majObj)
$iMarque->getListeMarques('', '', $marque, true);
}
die();
$referer=$cookie='';
$tDeb=microtime(true);
$page=getUrl($url, $cookie, $post, $referer, false, '', '', 60);
$duree=round(microtime(true)-$tDeb,3);
$body=$page['body'];
die();
if ($max) {
$idQualibat=$iQualibat->getMaxQualibat();
echo date('Y/m/d - H:i:s')." - Dernier id Qualibat : '$idQualibat'.".EOL;
die();
}
echo date('Y/m/d - H:i:s') ." - DEBUT du programme de récupération des entreprises Qualibat.".EOL;
if (count($tabQualibat)==0) {
$partiel=false;
$idQualibat=$iQualibat->getMaxQualibat();
if ($modeDebug) echo date('Y/m/d - H:i:s')." - Dernier id Qualibat : '$idQualibat'.".EOL;
for ($id=1; $id<=$idQualibat; $id++) {
$numQualibatTmp=$id;
$tabQualibat[]=$numQualibatTmp;
}
// Il faudrait rechercher le dernier numéro Orias attribué non encore en base
$iQualibat->force=$force;
while(true) {
$numQualibatTmp++;
echo date('Y/m/d - H:i:s')." - Recherche du dernier numéro Qualibat attribué : ";
if ($iQualibat->getInfosQualibat(0,$numQualibatTmp)) {
if (!$iQualibat->enCache) {
randsleep($tMin/10,$tMax/10);
$nbAcces++;
} else
$nbCache++;
echo "$numQualibatTmp ";
} else {
echo --$numQualibatTmp.' !'.EOL;
break;
}
}
shuffle($tabQualibat);
echo date('Y/m/d - H:i:s')." - Mise à jour de la base Qualibat...".EOL;
} else {
$partiel=true;
echo date('Y/m/d - H:i:s')." - Chargement de numéros Qualibat...".EOL;
}
$nb=count($tabQualibat);
$nbAcces=$nbCache=0;
foreach ($tabQualibat as $i=>$idQualibat) {
echo date('Y/m/d - H:i:s')." - $i/$nb: $idQualibat ... ";
$iQualibat->force=$force;
print_r($iQualibat->getInfosQualibat(0,$idQualibat));
echo date('Y/m/d - H:i:s')." - $i/$nb: $idQualibat ... récupéré ";
if (!$partiel && date('Hi')*1>=1930) {
//if (date('Hi')*1>=2235) {
$nbTot=$nbAcces+$nbCache;
$pct=@round($nbCache/$nbTot*100,2);
@sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', "Pompe Qualibat - Traitement quotidien", "$nbTot requêtes traitées dont $nbCache en cache ($pct %)");
die();
}
if (!$iQualibat->enCache) {
echo "via WWW. Attente...".EOL;
if (!$partiel) randsleep($tMin,$tMax);
$nbAcces++;
} else {
echo "en cache !".EOL;
$nbCache++;
}
}
$nbTot=$nbAcces+$nbCache;
$pct=round($nbCache/$nbTot*100,2);
if (!$partiel) {
@sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', "Pompe Qualibat - Tout est fini !", "FIN des $nbTot requêtes traitées dont $nbCache en cache ($pct %)");
}
echo date('Y/m/d - H:i:s')." - FIN des $nbTot requêtes dont $nbCache en cache ($pct %)".EOL;
die();