Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Wczytywanie strony przez curl - sprawdzenie, Jak sprawdzić czy strona się wczytała do końca ?
fiasko
post 1.01.2011, 17:19:35
Post #1





Grupa: Zarejestrowani
Postów: 243
Pomógł: 1
Dołączył: 1.06.2010

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


Mam problem z tym jak sprawdzić czy dana strona wczytywana przez curl i czy wczytała się do końca.

Nie znam strony, która ma się wczytać bo będą to różne strony. Nie znam też jej wielkości. Ale chcę sprawdzić czy strona się wczytała do końca.

W jednej aplikacji mam problem jak to stwierdzić. Napisałem więc funkcje sprawdzające w oparciu o preq_match_all aby mieć pewność, że strona się wyczytała. Napisałem dwa warunki , które mają potwierdzić czy strona się wczytała.

Sprawdzenie pierwsze na to czy na końcu kodu wczytywanej strony jest poszukiwany przez mnie ciąg znaków, który wiem , że tam na pewno wystąpi w tej stronie.
Sprawdzenie drugie czy w stronie jest ciąg znaków , który ta strona musi zawierać np nazwa jej domeny.

Jeśli te dwa warunki będą spełnione to uznawałem, że strona się wczytała. Niestety przez serwery proxy działa to różnie.





Dlatego mam też pytanie jak inaczej to sprawdzać ? Czy Curl daje możliwość sprawdzenia czy operacja wczytywania zakończyła się poprawnie i nie została przerwana ?


  1. <?
  2.  
  3. for($n=1;$n <=count($sSite) ;$n++) {
  4. $sLi = '/\<h3 class\=\"r\"\>\<a href\=\"(.*?)\" class\=l\>/';
  5. $dopasowanie = '/(google.pl)/';// sprawdzam czy strona zawiera ciąg znaków poszukiwany prze zemnie
  6. $dopasowanie2 = '/(c\=0\;c)/';// sprawdzam czy strona się wczytała do końca
  7. $strona[$n]["content"];
  8.  
  9.  
  10. $qsp = NULL;
  11. $cp = NULL;
  12.  
  13. $qsp = $strona[$n]["content"];
  14.  
  15. $cp = $qsp ;
  16. $dp= stripslashes($qsp);
  17. $dp= strip_tags($dp);
  18. $dp = htmlspecialchars($dp);
  19.  
  20.  
  21. $sprawdzanie[0][0] = '';
  22. $sprawdzanie2[0][0] = '';
  23. @preg_match_all($dopasowanie, $cp , $sprawdzanie);
  24. @preg_match_all($dopasowanie2, $dp , $sprawdzanie2);
  25.  
  26.  
  27. $znalazlem = 0;
  28. if ($sprawdzanie[0][0] == "google.pl" and $sprawdzanie2[0][0] == "c=0;c"){
  29.  
  30. $znalazlem = 1;
  31.  
  32. // jeśli się wczytała to zwraca jeden i wykonuje kod
  33.  
  34. // szukam wyrażenia regularnego z linkami w kodzie.
  35. preg_match_all($sLinkRegExp, $strona[$n]["content"], $rezultat);
  36.  
  37.  
  38.  
  39.  
  40. $licznik = 0 ;
  41. $wartosc2 = NULL;
  42. foreach($rezultat[1] as $klucz => $wartosc2)
  43. {
  44. //echo $wartosc2 . "<br>";
  45. $licznik ++;
  46. $p = strpos($wartosc2, "http://");
  47.  
  48. if ($p != 0){
  49. $p = strpos($wartosc2, "https://");
  50. }
  51.  
  52. $k = strlen($wartosc2) - 1;
  53. $znaki = $k - $p; // obrabiam zmienną $wartosc2 do postaci czystego url
  54. $wartosc2 = substr($wartosc2 ,$p, $znaki);
  55.  
  56. if (preg_match('/((http\:\/\/www\.)|(https\:\/\/www\.)|(https\:\/\/)|(http\:\/\/))('.$sSite[$n].')[a-zA-Z0-9\"\<\>\=\:\.\s\/]{0,1435}/', $wartosc2 )){
  57. $pozycja[$n] = $licznik ;
  58. echo "<b>".$wartosc2."</b> znaleziono stronę na pozcyji ".$pozycja[$n]."<br>";
  59.  
  60.  
  61.  
  62. break;
  63. } //koniec preg_match if
  64. else {
  65.  
  66. echo $wartosc2. "<br>";
  67. }
  68.  
  69.  
  70.  
  71. } // koniec pętli foreatch
  72.  
  73.  
  74.  
  75.  
  76.  
  77.  
  78. } // koniec if znalazłem
  79.  
  80. else {
  81.  
  82. $znalazlem = 0;
  83. }
  84.  
  85.  
  86. echo '<p style="color:red;">';
  87. echo "znalazłem w ".$n." przypadku wynosi: ".$znalazlem."<br></p>";
  88. echo "<br><br><br><br><br><br>";
  89.  
  90. }//koniec pętli for dla sprawdzania
  91.  
  92. ?>
  93.  



Czasami mam taki wynik, że znalazłem wynosi 1 - czyli strona się niby wczytała. Ale pozycja nie jest wyliczana. Jak przejdę na inne proxy to wszystko jest ok. Istna ruletka.

Nie wiem dlaczego raz mi wylicza pozycje mimo, że wartość znalazłem wynosi 1, a raz nie wylicza.
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 00:58