nuno: Skript Dollarkurs - wer kennt Alternativen

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

  1. 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

    1. 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

      1. 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

        --
        Man soll den Tag nicht vor dem Abend loben.
        Und den Mann nicht vor dem Morgen.
          (alte Volksweisheit)
        Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
  2. 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.

    1. 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

      1. $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.

        1. 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

          --
           ☻_
          /▌
          / \ Nur selber lernen macht schlau
          http://bergpost.annerschbarrich.de