Skript Dollarkurs - wer kennt Alternativen
nuno
- php
Liebes Forum,
ich binde in einem Projekt momentan den aktuellen Dollarkurs von der folgenden Website ein:
http://www.webservicex.net/CurrencyConvertor.asmx/ConversionRate?FromCurrency=EUR&ToCurrency=USD
Dies klappt meist auch, aber es kommt halt wegen Überlastung auf deren Server zu temporären Ausfällen sowie teilweise sehr langen Ladezeiten.
Ein Alternative wäre z.B.:
http://waehrungskurs.de/ihr/gif.php4?textcolor=ffffff&font=Arial0&from=EUR&to=USD
Hier gibt es allerdings das Problem, dass ich die dort erzeugte Grafik nicht auf meine eigene Site einbinden kann, weil es sich um einen geschützten Bereich mit Passwort-Schutz handelt.
Nun meine FRAGE:
kennt jemand ein entspr. Skript bzw. einen kostenlosen Webservice, den ich auch bei geschützten Sites nutzen kann und auch nicht ganz so fehleranfällig ist???
VIELEN DANK FÜR EURE TIPS!!!
LG,
nuno
Moin,
http://waehrungskurs.de/ihr/gif.php4?textcolor=ffffff&font=Arial0&from=EUR&to=USD
Hier gibt es allerdings das Problem, dass ich die dort erzeugte Grafik nicht auf meine eigene Site einbinden kann, weil es sich um einen geschützten Bereich mit Passwort-Schutz handelt.
Da kommt keine Passwortabfrage. Falls Credentials erforderlich sind, sende den
Authorization: Basic ...
Header im Request.
Hotti
Da kommt keine Passwortabfrage. Falls Credentials erforderlich sind, sende den
sorry, wenn ich mich falsch ausgedrückt habe:
meine eigene Site ist passwortgeschützt und ich kann die Grafik per HTML zwar einbinden, es wird aber nichts dargestellt...
LG,
nuno
Hallo,
sorry, wenn ich mich falsch ausgedrückt habe:
meine eigene Site ist passwortgeschützt und ich kann die Grafik per HTML zwar einbinden, es wird aber nichts dargestellt...
dann machst du irgendwas falsch - normalerweise sollte zumindest eine Warnung des Browsers kommen, dass die Seite gemischte Inhalte hat (SSL/non-SSL), und dann kann ich als Nutzer entscheiden, ob ich das akzeptieren mag oder nicht.
Da man das der allgemeinen Besucherschar aber nicht zumuten möchte, bietet sich vielleicht an, die Grafik vom eigenen Server anzufordern (via SSL) und sie von dort dann bei Bedarf vom Fremdserver zu holen und durchzureichen (und ggf. für ein paar Stunden zu cachen). Vorausgesetzt natürlich, der fremde Dienst erlaubt diese Art der Nutzung überhaupt.
Aber einfach "nichts" ... das ist nicht einleuchtend.
Ciao,
Martin
Dies klappt meist auch, aber es kommt halt wegen Überlastung auf deren Server zu temporären Ausfällen sowie teilweise sehr langen Ladezeiten.
Beschäftige dich mit Caching.
Request absetzen, wenn dieser zu lange dauert (kurzes Timeout setzen) dann wird das lokale Cachefile gelesen. Wenn nicht, wird das File abgeholt und das Cachefile dadurch ersetzt.
Zusätzlich könnet man noch eine Routine einbauen, die prüft wie alt das Cache-File ist - wenn es z.B. jünger als 5 Minuten ist, wird garnicht erst gefragt ob es ein neues gibt.
Request absetzen, wenn dieser zu lange dauert (kurzes Timeout setzen) dann wird das lokale Cachefile gelesen. Wenn nicht, wird das File abgeholt und das Cachefile dadurch ersetzt.
Zusätzlich könnet man noch eine Routine einbauen, die prüft wie alt das Cache-File ist - wenn es z.B. jünger als 5 Minuten ist, wird garnicht erst gefragt ob es ein neues gibt.
Vielen Dank für den Tip - die Prüfroutine bekomme ich noch hin, aber ich habe Schwierigkeiten so ein Timeout zu setzen bzw. habe das mit PHP noch nicht gemacht - muss man dafür nicht JS einsetzen?
So sieht der Code derzeit aus:
$handle = fopen("http://www.webservicex.net/CurrencyConvertor.asmx/ConversionRate?FromCurrency=EUR&ToCurrency=USD", "rb");
$contents = stream_get_contents($handle);
fclose($handle);
Dann lese ich den Dollarkurs mit echo $contents aus.
Wie und wann kommt also das Timeout ins Spiel?
LG,
nuno
$handle = fopen("http://www.webservicex.net/CurrencyConvertor.asmx/ConversionRate?FromCurrency=EUR&ToCurrency=USD", "rb");
$contents = stream_get_contents($handle);
fclose($handle);Dann lese ich den Dollarkurs mit echo $contents aus.
Wie und wann kommt also das Timeout ins Spiel?
Um das besser zu kontrollieren solletst du du mit fsockopen() oder cURL arbeiten - für fopen() kannstdu den timeout mit stream_set_timeout() setzen.
Hello,
$handle = fopen("http://www.webservicex.net/CurrencyConvertor.asmx/ConversionRate?FromCurrency=EUR&ToCurrency=USD", "rb");
$contents = stream_get_contents($handle);
fclose($handle);Dann lese ich den Dollarkurs mit echo $contents aus.
Wie und wann kommt also das Timeout ins Spiel?
Um das besser zu kontrollieren solletst du du mit fsockopen() oder cURL arbeiten - für fopen() kannstdu den timeout mit stream_set_timeout() setzen.
Das ist der Timeout für die Leseanforderung, also die Bytes, die Du zum Lesen in Auftrag gibst.
Der Timeout für die Öffnungsanforderung (also bei Remote-Öffnung den Socket) bleibt davon noch unbeeindruckt. Wenn man keinen Socket bekommt, muss man trotzdem bis zum Timeout des Sockets warten.
Die Konfigurationsparameter und die Funktionen dafür sind sehr verwirrend benannt.
default_socket_timeout regelt den Timeout für die Verbindungsaufnahme,
also das Anfordern und Erhalten eines gültigen Sockets
setzen kannst Du den mit ini_set() oder bei Verwendung von
fsockopen() temporär durch das
stream_set_timeout() Syononyme. Regeln beide den Timeout Datenübertragung auf einem
socket_set_timeout() bereits gültigen (offenen) Socket.
Das kann man aufgrund der schlechten Symbolwahl leider schnell durcheinanderbringen
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg