Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Jak "zaczekać" na wynik?
Forum PHP.pl > Forum > PHP
nker
Napisałem skrypt, który ma sprawdzać, czy domeny trzyznakowe zawierające cyfry są zajęte. Niestety, skrypt nie "czeka" na odpowiedź serwera i leci dalej, jak temu zaradzić?
  1. <?php
  2. $znaki = array('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','r','s','t','u','w','z',1,2,3,4,5,6,7,8,9,0);
  3. $wszystkie = 0;
  4. $zajete = 0;
  5. $wolne = 0;
  6. for ($i = 0;$i < 32; $i = $i + 1) {
  7. for ($j = 0;$j < 32; $j = $j + 1) {
  8. for ($k = 0;$k < 32; $k = $k + 1) {
  9. if(($i < 22) && ($j < 22) && ($k < 22)) {
  10. } else {
  11. $adres = $znaki[$i].$znaki[$j].$znaki[$k].'.pl';
  12. $dane_wejsciowe = 'whois -h whois.dns.pl'.$adres;
  13. $wynik = shell_exec($dane_wejsciowe);
  14. $tak = preg_match("/No information about domain/", $wynik);
  15. if($tak){
  16. $zajete = $zajete + 1;
  17.  
  18. } else {
  19. print "<a href=\"http://".$adres."\">".$adres."</a><br>";
  20. $wolne = $wolne + 1;
  21. }
  22. $wszystkie = $wszystkie + 1;
  23. flush();}
  24. }
  25. }
  26. }
  27. ?>
  28. wszystkie:
  29. <?php print $wszystkie; ?>,
  30. wolne:
  31. <?php print $wolne; ?>,
  32. zajete:
  33. <?php print $zajete;?>
.radex
wstawić to w pętlę? może przyda się sleep() ?
pyro
Cytat(radex_p @ 29.05.2008, 21:23:43 ) *
wstawić to w pętlę? może przyda się sleep() ?


radex_p, po co tutaj sleep?

Mi sie wydaje, że to może być przyczyna 12 lini:

  1. <?php
  2. $dane_wejsciowe = 'whois -h whois.dns.pl'.$adres;
  3. ?>


zamień na:

  1. <?php
  2. $dane_wejsciowe = 'whois -h whois.dns.pl '.$adres;
  3. ?>


Chodzi mi tutaj o spację, gdyż polecenie mogłoby mieć postać whois -h whois.dns.plxyz.pl a powinno whois -h whois.dns.pl xyz.pl
nker
No niestety, wyświetla się "previus request is being process" albo nic i skrypt leci dalej :]
sniezny_wilk
Zrób to rekurencyjnie, przebuduj trochę skrypt i nie korzystaj z for'ów. Niezależnie od tego czy jest zajęta domena (w tym ifie), wywołuj kolejną funkcję z nowym parametrem, dodatkowo nałóż jakiś warunek zatrzymania rekurencji czyli wtedy gdy funkcja zrobi:

  1. <?php
  2. return;
  3. ?>
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.