#!/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('/