ce que Theo Développant a dit ... (je suis sûr qu'il ya beaucoup plus lisse façon de le faire et je vais être dénoncé comme un hack mais il fonctionne damnit)
Je suis essentiellement juste extraire les deux premiers chiffres sous l'EUR/USD en rouge.
Voici le script php pour mettre sur votre serveur appelé getContent.php
<?php
$handle = fopen("getVars.php", "r");
$contents = '';
while (!feof($handle)) {
$contents .= fread($handle, 8192);
}
$vars = explode("&", $contents);
$time = substr($vars[2], 5);
$difference = abs(date(s)-$time);
if($difference>5)
{
$handle = fopen("http://www.fxstreet.com/technical/currencies-glance/pair.aspx?id=EUR/USD", "r");
$contents = '';
while (!feof($handle)) {
$contents .= fread($handle, 8192);
}
$contents=trim($contents);
$pos1 = strpos($contents, 'lhtml_0" innerOnUpdate="att=BID" innerfilter="format_number">');
$str1 = substr($contents, $pos1, 100);
$cur1 = substr($str1, 61, 6);
$pos2 = strpos($contents, 'lhtml_1" innerOnUpdate="att=ASK" innerfilter="format_number">');
$str2 = substr($contents, $pos2, 100);
$cur2 = substr($str2, 61, 6);
$cachedPage = fopen("getVars.php", "w");
$varString = "cur1=$cur1&cur2=$cur2&time=".date(s);
fwrite($cachedPage,$varString);
fclose($cachedPage);
echo "cur1=$cur1&cur2=$cur2&cached=false";
}
else
{
$handle = fopen("getVars.php", "r");
$contents = '';
while (!feof($handle)) {
$contents .= fread($handle, 8192);
}
echo $contents."&cached=true";
}
fclose($handle);
?>
Et puis le actionscript
var updateTimer:Timer = new Timer(5000);
updateTimer.addEventListener(TimerEvent.TIMER, getQuotes);
updateTimer.start();
function getQuotes(e:Event):void
{
var request:URLRequest = new URLRequest ("getContent.php");
var loader:URLLoader = new URLLoader (request);
loader.addEventListener(Event.COMPLETE, onComplete);
loader.dataFormat = URLLoaderDataFormat.VARIABLES;
loader.load(request);
}
function onComplete (event:Event):void
{
var variables:URLVariables = new URLVariables(event.target.data);
currency1.text = variables.cur1;
currency2.text = variables.cur2;
}
var e:Event;
getQuotes(e);
Vous pouvez le voir en action ici ... http://www.hupcapstudios.com/getCurrency.swf
La partie hack était mon analyse de la page en php. J'ai dû faire de sérieuses actions de substring. Je suis sûr que n'importe qui avec une quantité décente de capacité d'analyse pourrait écrire un code plus propre pour extraire toutes les données dont vous avez besoin.
Je pensais juste que je me balancerais dessus. Bonne chance :)
C'est cool, mais je suppose que c'est une bonne idée de ne pas l'analyser à chaque requête (à moins que vous ne gériez ceci avec le cache du serveur). Imaginez un chiffre: 200 utilisateurs se connectent pendant 60 secondes, ce qui fait 2400 requêtes (inévitables) + 2400 fopen/parsing (ça fait mal). Vous pourriez faire ce dernier numéro 12 en mettant en cache le résultat (ou même moins si vous utilisez une méthode "paresseuse"). –
Bon appel! Je viens de mettre à jour le php pour recharger et réécrire l'URL avec le contenu seulement si le temps entre les visites est supérieur à 5 secondes. –