Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Zapytanie whois w pętli problem
Forum PHP.pl > Forum > Przedszkole
Hazo
Witam
Mam problem z zapytaniem whois dla wielu domen. Napisałem sobie taki srypcik:
  1. <?php
  2. $domeny = "home.pl,aaaaaaaaaa.pl,onet.pl";
  3. $domena = explode(",", "$domeny");
  4. $serwer = "whois.dns.pl";
  5.  
  6. foreach ($domena as $fraza){
  7.  
  8. $f=fsockopen($serwer,43,$errno,$errstr,20);
  9. if ($f) {
  10. fputs($f, "$frazar\n");
  11. while(!feof($f)) {$wynik .= fgets($f,128); }
  12. fclose($f);
  13. }
  14. echo nl2br($wynik); 
  15. }
  16. ?>


Wszystko działa pieknie ładnie tylko wtedy gdy mam jeden adres w ciągu, gdy dorzuce kolejny do sprawdzenia to sytuacja się komplikuje.
Najpierw dostaje wynik dla home.pl, później nie wiadomo dla czego dwa razy dla home.pl później dla aaaaaaaaa.pl, i końcu dla onet.pl
Próbowałem zrobić to na pętli for ale efekt taki sam. Ktoś wie jak to naprawić?
Szukałem na forum czegoś podobnego ale niestety nie znalazłem.
Z góry dzięki za pomoc.
.radex
Nie komplikuj sprawy, zapisuj od razu w tablicy.

$domeny = array('home.pl', 'aaaaaaaaaa.pl', 'onet.pl');
nospor
hehe, chodzi oto ze zmiennej $wynik nie zerujesz smile.gif
  1. <?php
  2. $domeny = "home.pl,aaaaaaaaaa.pl,onet.pl";
  3. $domena = explode(",", "$domeny");
  4. $serwer = "whois.dns.pl";
  5.  
  6. foreach ($domena as $fraza){
  7. $wynik = '';
  8. $f=fsockopen($serwer,43,$errno,$errstr,20);
  9. if ($f) {
  10. fputs($f, "$frazar\n");
  11. while(!feof($f)) {$wynik .= fgets($f,128); }
  12. fclose($f);
  13. }
  14. echo nl2br($wynik); 
  15. }
  16. ?>

i juz smile.gif

od biedy mozesz nie zerowac, tylko wywal to: echo nl2br($wynik);  poza petle winksmiley.jpg
Hazo
Taki mały błąd a tyle problemów, dzięki za pomoc.
Jak wywale echo nl2br($wynik) poza pętle to dostane wynik jedynie dla ostatniej domeny.

Skrypt ogólnie działa jak powinien ale pojawił się kolejny kłopot. Wysłanie kolejnego zapytania moge zrealizować dopiero po 10s od poprzedniego, jeśli zrobie to wcześniej - dostaje spore karne opóźnienie. Tylko jak zmienić skrypt aby ponowne zapytanie nastąpiło po 10s?
Vielta
Może: http://pl.php.net/manual/en/function.sleep.php ?
nospor
Cytat
Jak wywale echo nl2br($wynik) poza pętle to dostane wynik jedynie dla ostatniej domeny.
Bo jak wprowadzisz moją poprawke to tak sie dzieje. Miales dac to poza petle bez mojej poprawki.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.