#!/usr/bin/php -c/var/www/batch/config/php_batch_sd.ini
'Dim', 1=>'Lun', 2=>'Mar', 3=>'Mer', 4=>'Jeu', 5=>'Ven', 6=>'Sam');
function getPrevDate($dateCour, $nbJours=1) {
$nextDate=date('Ymd', mktime(0, 0, 0, WDate::dateT('Ymd','m', $dateCour), WDate::dateT('Ymd','d', $dateCour)-$nbJours, WDate::dateT('Ymd','Y', $dateCour)));
return $nextDate;
}
$tmin=10;
$tmax=60;
set_time_limit(0);
$pays=$history=false;
$dateDeb=getPrevDate(date('Ymd'), rand(2,10));
$dateF=getPrevDate(date('Ymd'));
$strInfoProg='Usage : '.basename($argv[0]). " [OPTION]
Recupère les cours des devises par rapport à l'euro.
Sans aucun paramètre, récupère le dernier cours pour chaque devise par rapport à l'euro.
Sinon:
-d:JJ/MM/AAAA Date de début de période (*)
-f:JJ/MM/AAAA Date de fin de période (*)
-n:X Intervalle MIN en secondes entre les requêtes (défaut=$tmin)
-i:X \" MAX \" \" \" \" \" (défaut=$tmax)
-p Récupération de la dernière liste des pays (par défaut, une fois par mois, le 1er du mois)
-h Récupération de l'historique complet
-c=DEV Récupération limité à la devise passée en paramètre
* : par défaut, le programme récupère le dernier cour pour le jour précédent !
";
$tabCurrency=array();
$argv=$_SERVER['argv'];
if ($_SERVER['argc']==1) $dernierCour=true;
else {
for ($i=1; isset($argv[$i]); $i++) {
if (substr($argv[$i],0,1)=='-') {
switch (substr($argv[$i],1,1)) {
case 'd':
$dateDebut=substr($argv[$i],3,10);
$dateDeb=WDate::dateT('d/m/Y', 'Ymd', $dateDebut);
break;
case 'f':
$dateFin=substr($argv[$i],3,10);
$dateF=WDate::dateT('d/m/Y', 'Ymd', $dateFin);
break;
case 'n':
$tmin=trim(substr($argv[$i],3))*1;
if ($min<0) $tmin=0;
break;
case 'i':
$tmax=trim(substr($argv[$i],3))*1;
if ($tmax<5) $tmax=2;
break;
case 'p':
$pays=true;
break;
case 'h':
$history=true;
break;
case '-':
die($strInfoProg);
break;
default:
die('Option '. $argv[$i] . " inconnue !\n");
break;
}
} else {
$tabCurrency[]=$argv[$i];
}
}
}
$iDb=new WDb('sdv1');
$iDb2=new WDb();
/** Une fois par mois, récupéreation de la liste des pays et de leur devises
**/
if($pays || date('d')*1==1) {
echo (date('Y/m/d - H:i:s') .' - Début de la mise à jour des pays et de leur devise !'. EOL);
$crea=$maj=0;
$url= 'http://fxtop.com/fr/showpays.php3';
$referer= '';
$page=getUrl($url, '', '', $referer, false, 'fxtop.com');
$body=$page['body'];
$referer='http://fxtop.com/fr/showpays.php3';
$strTmp=@getTextInHtml($body, '
', ' >', '
');
$tabTmp=explode('
', $strTmp);
foreach ($tabTmp as $i=>$strTmp) {
$tabLigne=explode('
', $strTmp);
if ($i==0) {
if (trim($strTmp)<>'')
die(date('Y/m/d - H:i:s') .' - ERREUR : La première ligne du tableau n\'est pas vide : "'.$strTmp.'" trouvé !'. EOL);
continue;
} elseif ($i==1) {
// On vérifie que les noms de colonnes et les devises attendues sont les bonnes
if (trim(strip_tags($tabLigne[0]))<>'Pays')
die(date('Y/m/d - H:i:s') .' - ERREUR : Zone "Pays" attendue mais "'.strip_tags($tabLigne[0]).'" trouvé !'. EOL);
if (trim(strip_tags($tabLigne[1]))<>'Zone')
die(date('Y/m/d - H:i:s') .' - ERREUR : Zone "Zone" attendue mais "'.strip_tags($tabLigne[1]).'" trouvé !'. EOL);
if (trim(strip_tags($tabLigne[2]))<>'Devise')
die(date('Y/m/d - H:i:s') .' - ERREUR : Zone "Devise" attendue mais "'.strip_tags($tabLigne[2]).'" trouvé !'. EOL);
if (trim(strip_tags($tabLigne[3]))<>'Drapeau')
die(date('Y/m/d - H:i:s') .' - ERREUR : Zone "Drapeau" attendue mais "'.strip_tags($tabLigne[3]).'" trouvé !'. EOL);
if (trim(strip_tags($tabLigne[4]))<>'Code Nic')
die(date('Y/m/d - H:i:s') .' - ERREUR : Zone "Code Nic" attendue mais "'.strip_tags($tabLigne[4]).'" trouvé !'. EOL);
} else {
$libPays=trim(strip_tags($tabLigne[0]));
$libZone=trim(strip_tags($tabLigne[1]));
$devise =trim(strip_tags($tabLigne[2]));
$urlDrap=$tabLigne[3];
$strTmp=str_replace('$libPays,
'zone'=>$libZone,
'drapeau'=>$ficImgDrapeaux,
'devise'=>$devise,
);
$tabInsert=array_merge($tabUpdate, array('codPays'=>$codPays, 'dateInsert'=>date('YmdHis')));
if (!$iDb2->insert('tabPays', $tabInsert)) {
if (!$iDb2->update('tabPays', $tabUpdate, "codPays='$codPays'", true)) {
if (mysql_errno()<>1062)
die(date ('Y/m/d - H:i:s') .' - ERREUR : MySql n°'. mysql_errno() .' : '. mysql_error() . EOL);
} else
$maj++;
} else {
echo (date('Y/m/d - H:i:s') ." - Création du pays $libPays ($codPays) en $libZone !". EOL);
$crea++;
}
}
}
echo (date('Y/m/d - H:i:s') ." - Fin de la mise à jour des pays et de leur devise : $crea création(s) / $maj MAJ.". EOL);
}
/** Récupération de la liste des devises
**/
echo (date('Y/m/d - H:i:s') .' - Début de la mise à jour de la liste des devise !'. EOL);
$crea=$maj=0;
$tabDevisesSite=array();
$url= 'http://fxtop.com/fr/historates.php3';
$referer= '';
$page=getUrl($url, '', '', $referer, false, 'fxtop.com');
$body=$page['body'];
$strTmp=@getTextInHtml($body, '');
$tabTmp=preg_split('/
', $strTmp);
$nbCours=0;
foreach ($tabTmp as $i=>$strTmp) {
$tabLigne=explode('
', $strTmp);
if ($i==0) {
// On vérifie que les noms de colonnes et les devises attendues sont les bonnes
if (strip_tags($tabLigne[0])<>'Date')
die(date('Y/m/d - H:i:s') .' - ERREUR : Zone "Date" attendue mais "'.strip_tags($tabLigne[0]).'" trouvé !'. EOL);
if (strip_tags($tabLigne[1])<>$devise.'/EUR')
die(date('Y/m/d - H:i:s') .' - ERREUR : Zone "'.$devise.'/EUR" attendue mais "'.strip_tags($tabLigne[1]).'" trouvé !'. EOL);
} else {
$date=$tabLigne[0];
if ($i==1) $dateMax=$date;
$conv=$tabLigne[1];
//echo "$devise;$date;$conv\n";
$nbCours++;
$tabInsert=array( 'devise'=>$devise,
'date'=>$date,
'valeur'=>$conv,
);
if (!$iDb->insert('devise_cours', $tabInsert))
if (mysql_errno()<>1062)
die(date ('Y/m/d - H:i:s') .' - ERREUR : MySql n°'. mysql_errno() .' : '. mysql_error() . EOL);
}
}
$dateMin=$date;
if ($nbCours==1)
echo (date('Y/m/d - H:i:s') ." - Devise $devise : 1 valeur ($conv) du $dateMin au $dateMax...". EOL);
else
echo (date('Y/m/d - H:i:s') ." - Devise $devise : $nbCours valeurs du $dateMin au $dateMax...". EOL);
}
echo date('Y/m/d - H:i:s') .' - FIN du script.'. EOL;
?>