Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> extractowanie kursu waluty i potem uzycie jej jako zmiennej
post
Post #1





Grupa:
Postów: 0
Pomógł:
Dołączył: --

Ostrzeżenie: (0%)
-----


mam sobie taki skrypcik:

[php:1:e539f0baee]

<?
$host = "www.nbp.pl";
$strona="/Kursy/KursyA.html";

$wskaznik = fsockopen($host, 80, $blad_nr, $blad_opis) or
die ("Nie można otworzyć strony $host<BR>Błąd: $blad_nr <BR>Opis: $blad_opis");
$naglowek = "GET $strona HTTP/1.1rnHost: $hostrnrn";
fputs($wskaznik, $naglowek);

$lancuch = "";
while(!feof($wskaznik))
$lancuch = $lancuch.fgets($wskaznik);
fclose($wskaznik);

$odpowiedz = substr($lancuch,0,strpos($lancuch,"rnrn"));

$strona = strip_tags(substr($lancuch, strpos($lancuch,"rnrn")));

$pre_usd = substr($strona,strpos($strona,"USD"),10);
$pre_euro = substr($strona,strpos($strona,"EUR"),10);
$pre_usd2 = substr($pre_usd, -5,4);
$pre_euro2 = substr($pre_euro, -5,4);

$usd = substr_replace($pre_usd2, ".",-3).substr($pre_usd, -3,2);
print "cena dolara: ".$pre_usd;

echo "<br>";

$euro = substr_replace($pre_euro2, ".",-3).substr($pre_euro, -3,2);
print "cena euro: ".$pre_euro;

echo "<br>";
$mnoznik = 20000;
echo "a teraz wartosci pomnozone przez zmienna mnoznik";

echo "<br>";

$wynik_eu = $euro*$mnoznik;
$wynik_us = $usd*$mnoznik;

print "<br>cena w zl: ".$mnoznik;
print "<br>cena w $: ".$wynik_us;
print "<br>cena w Eu: ".$wynik_eu;

?>
[/php:1:e539f0baee]

ktory zczytuje z nbp aktualnego dolara i eurusa a potem uzywa je do wyliczania cen

jednak owy skrypt ma wade, choc dziala to dziala dziwnie, czasami szybko a czasami straaaasznie dlugo, i teraz nie wiem dla czego
(nie jest to wina przeplywnosci lacza miedzy serwerem gdzie jest skrypt a serwerem nbp )

czy ktos moglby mi pomoc ?
moze podsunac jakis lepszy pomysl na otrzymywanie jako zmienne aktualnych kursow walut ?
Go to the top of the page
+Quote Post
neo.priv
post
Post #2





Grupa: Zarejestrowani
Postów: 78
Pomógł: 0
Dołączył: 27.02.2004

Ostrzeżenie: (10%)
X----


Zobacz www.php.pl, jest tam news o Turck MMCache for php.

Poczytaj może pomoże.
Go to the top of the page
+Quote Post
post
Post #3





Grupa:
Postów: 0
Pomógł:
Dołączył: --

Ostrzeżenie: (0%)
-----


Ja bym wyciagnal zawartosc calej strony, potem wyciagnal link do xml, odczytal interesujace mnie waluty i wrzucile je do tablicy. Potem juz tylko wyswietlic (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Wygladaloby to tak mniej wiecej:
[php:1:96b99461c4]<?php
// Odczyt nazwy pliku XML
$link_kurs = "http://www.nbp.pl/Kursy/KursyA.html";
$link_plik = fopen($link_kurs, "r");
while (!feof($link_plik))
$string_tmp .= fgets($link_plik, 4096);
fclose($link_plik);

// Wyciagniecie linku do pliku XML
$ereg = "/<a href="xml/(.*)">powyższa tabela w formacie .xml</a>/i";
preg_match($ereg,$string_tmp,$URL);
$link_xml = $URL[1];
?>[/php:1:96b99461c4]
No i parser trzeba napisac osobno, ale na klasach sie nie znam za bardzo (IMG:http://forum.php.pl/style_emoticons/default/sad.gif) Mam nadzieje, ze troche pomoze ten kodzik. Swoja droga zapotrzebowanie na takie skrypty rosnie, juz prawie wszedzie sa kalkulatory walut (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif)
Go to the top of the page
+Quote Post
DeyV
post
Post #4





Grupa: Zarząd
Postów: 2 277
Pomógł: 6
Dołączył: 27.12.2002
Skąd: Wołów/Wrocław




1. sprawdz, co tak naprawdę sie tak wolno wykonuje, poprzez umieszczenie w kolejnych miejscach odpowiednich zegarów. W ten sposób określisz, który fragment kody wykonuje się wtedy najwolniej.

2. I tak założę się, że problem jest właśnie w pobieraniu pliku z zewnętrznego serwera. Nawet jak sam transfer pomiędzy serwerami jest ok, to przyczyną może być np. przeciążenie serwerka nbp.

3. Aby uniknąć tego problemu, warto by było w jakiś sposób cachować wyniki tego skryptu. W końcu kursy walut nie zmieniają się co 10 min (prawda?) więc wystarczyłoby wykonywac taki skrypt raz na jakiś czas, a następnie zapisać jego wyniki w jakimś pliczku (bazie) już na naszym serwerze.
Go to the top of the page
+Quote Post
post
Post #5





Grupa:
Postów: 0
Pomógł:
Dołączył: --

Ostrzeżenie: (0%)
-----


ok, posiedzialem chwile przy przeszukiwaniu forum i znalazlem cos takiego:
http://forum.php.pl/viewtopic.php?t=3026&start=21

[php:1:38abc3fed6]
<?
$f = @fopen("http://www.nbp.pl/Kursy/KursyA.html", "r");
if ($f) {
while(!feof($f)) $strona.= fread($f,1024); fclose($f);
$strona = preg_replace("/r/", " ", $strona);
$strona = preg_replace("/n/", " ", $strona);

preg_match("/z dnia <b>(.*?)</b>/", $strona, $zdnia);
echo "<br>średnie kursy walut <br>NBP z ". $zdnia[1];
preg_match_all ("/<tr valign="middle">.*?</tr>/", $strona, $sa);
for ($i=0; $i<count($sa[0]); $i++) {
preg_match("/new">(.*?)</td/", $sa[0][$i], $waluta);
preg_match("/lne">(.*?)</td/", $sa[0][$i], $kurs);
if (eregi("USD",$waluta[1])) echo "<br>1 USD - ".$kurs[1];
if (eregi("EUR",$waluta[1])) echo "<br>1 EUR - ".$kurs[1];
if (eregi("GBP",$waluta[1])) echo "<br>1 GBP - ".$kurs[1];
}
}
?>
[/php:1:38abc3fed6]

ten skrypt zwraca waluty baardzo szybko, prawie tak szybko jak laduje sie strona.
nie porownywalnie szybciej niz ten ktory wczesniej podawalem
jednak problemem tego jest ze nie zwraca ich w postaci zmiennych
i nie wiem jak to zrobic

poza tym dalej nie wiem co tak zwalnialo we wczesniejszym skrypcie, serwery na ktorych odpalalem tamten byly rozne, od p200mmx do 2xP4 i to na roznych laczach, zawsze podobnie dluuuuugo

moze macie jakis pomysl (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif)
Go to the top of the page
+Quote Post
nocnyMark()
post
Post #6





Grupa: Zarejestrowani
Postów: 50
Pomógł: 0
Dołączył: 26.04.2004

Ostrzeżenie: (0%)
-----


to juz tak z czystej powinnosci by zakonczyc temat podam rozwiazanie dla przyszlych pokolen poczatqjacych ktore nie beda mogly sobie z tym poradzic

przerobilem troche jeden z powyzszych skryptow i wyszlo tak:

[php:1:e5f556fc93]
<?php

// skrypt wyciaga dolara i euro ze strony NBP //

$f = @fopen("http://www.nbp.pl/Kursy/KursyA.html", "r");
if ($f) {
while(!feof($f)) $strona.= fread($f,1024); fclose($f);
$strona = preg_replace("/r/", " ", $strona);
$strona = preg_replace("/n/", " ", $strona);

preg_match("<xml/(.*?).xml>", $strona, $xml);

$f1 = @fopen("http://www.nbp.pl/Kursy/$xml[0]", "r");

if ($f1) {
while(!feof($f1)) $strona1.= fread($f1,1024); fclose($f1);
$strona1 = preg_replace("/r/", "", $strona1);
$strona1 = preg_replace("/n/", "", $strona1);
$strona1 = preg_replace("/ /", "", $strona1);
preg_match("/USD</kod_waluty><kurs_sredni>(.*?)</ku/", $strona1, $usd);
$usd = substr($usd[0], -10, -6);
global $usd;
$usd = substr($usd, 0, 1 ).".".substr($usd, 2,3);
preg_match("/EUR</kod_waluty><kurs_sredni>(.*?)</ku/", $strona1, $eur);
$eur = substr($eur[0], -10, -6);
global $eur;
$eur = substr($eur, 0, 1 ).".".substr($eur, 2,3);

}
}
echo "<br>kurs dol $usd i kurs eur $eur <br>";

?>[/php:1:e5f556fc93]

i na koniec dodam ze skrypt wyciaga aktualna nazwe pliku xml z tabela kursow ze strony nbp a potem w tym pliku xml szuka odpowiednich walut

mam nadzieje ze to komus pomoze bo mnie sie nie udalo znalesc na tym forum kodu w miare szybkiego, prostego i krotkiego, ktory by wyciagal waluty ktore potem mozna uzyc na stronie do dynamicznego przeliczania z pln'off na przyklad

pozdrawiam
i jakby co to pytac

ps. zgodnie z sugestia nexisa poprawilem, bledem okazalo sie to ze po wrzuceniu na strone forum dodawalo do skryptu kilka spacji no i wszystko sie zaczelo chrzanic - teraz skrocilem troche stringi ktore szuka w pliku *.xml - sprawdzilem kopiujac z forum skrypt - dziala
Go to the top of the page
+Quote Post
nexis
post
Post #7





Grupa: Zarejestrowani
Postów: 1 012
Pomógł: 109
Dołączył: 26.09.2003
Skąd: nexis.pl

Ostrzeżenie: (0%)
-----


Czy testowałeś ten skrypt w ogóle zanim go tak pewnie tu umieściłeś? Skrypt wrzuciłem na serwer - www.nexis.pl/waluta.php (poprawka: link nieaktualny) - i nie za bardzo to działa. Jakieś propozycje poprawek?

poprawka: Skrypt już działa (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
Kihol
post
Post #8





Grupa: Zarejestrowani
Postów: 46
Pomógł: 6
Dołączył: 20.06.2005
Skąd: Pyskowice

Ostrzeżenie: (0%)
-----


Witam, właściwie to nie wiem gdzie szukać czegoś takiego, więc piszę tutaj. Jeśli gdzieś jest już coś podobnego, to sorry, pokierujcie mnie.

Chodzi mi o podobną sprawę, ale logowania do części zabezpieczonej hasłem.
Tzn chcę zalogować się na stronę i pobrać dane jak np tutaj kurs dolara. Tylko, tak jak piszę, nie mam pojęcia jak się zalogować. W php piszę od niedawna. Ale programowałem już conieco w C.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.10.2025 - 08:29