![]() |
![]() ![]() |
![]() |
![]()
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 ? |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 78 Pomógł: 0 Dołączył: 27.02.2004 Ostrzeżenie: (10%) ![]() ![]() |
-------------------- Warsztst: Apache 1.3.31 | PHP 4.3.7RC1 | MySQL 4.0.18
Na warsztacie: RU llllllllll 98% |
|
|
![]()
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
![]() [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 ![]() ![]() |
|
|
![]()
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. -------------------- "Niezależnie od tego, jakie masz osiągnięcia, ktoś Ci pomaga..."
|
|
|
![]()
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 ![]() |
|
|
![]()
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 |
|
|
![]()
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 ![]() |
|
|
![]()
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. |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 20.07.2025 - 11:15 |