Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Przyśpieszenie skryptu
Forum PHP.pl > Forum > Przedszkole
vegeta
  1. <?php
  2. function getmicrotime(){
  3. list($usec, $sec) = explode(" ",microtime());
  4. return ((float)$usec + (float)$sec);
  5. }
  6. $time_start = getmicrotime();
  7.  
  8. require_once 'Services/W3C/HTMLValidator.php';
  9. $strona = "http://it-maniak.pl/";
  10. $original_file = file_get_contents($strona);
  11. echo '<h1>Linki znalezione na '. $strona .'</h1>';
  12. $stripped_file = strip_tags($original_file, "<a>");
  13. preg_match_all('#href="(http://[^/"]+[/]?)"#is', $stripped_file, $matches);
  14.  
  15. $unikat = array_unique($matches[1]); //Usuwa powtarzajace sie wartosci
  16.  
  17. function ClearArray($arr) //Czysci tablice z pustych kluczy
  18. {
  19. foreach($arr as $val)
  20. {
  21. if(!empty($val))
  22. {
  23. $cleared_arr[] = $val;
  24. }
  25. }
  26. return $cleared_arr;
  27. }
  28. $tablica = ClearArray($unikat);
  29.  
  30. $poprawne = 0;
  31.  
  32. for ($i = 0; $i < count($tablica); $i++)
  33. {
  34. echo $tablica[$i].' <a href="http://validator.w3.org/check?uri='.$tablica[$i].'">Validacja</a>';
  35. /*$v = new Services_W3C_HTMLValidator();
  36. $u = $tablica[$i];
  37. $r = $v->validate($u);
  38.  
  39. if ($r->isValid()) {
  40. echo ' <font color="green"><b>Valid!</b></font><br />';
  41. $poprawne++;
  42. } else {
  43. echo ' <font color="red">NOT valid!</font> Błędy: '. count($r->errors) .' Ostrzeżenia: '. count($r->warnings) .'<br />';
  44. }*/
  45. }
  46. echo '<br />Poprawne strony: '.$poprawne.'/'.$i;
  47.  
  48. $time_end = getmicrotime();
  49. $time = substr($time_end - $time_start, 0, 5);
  50. echo '<br />Strona została wygenerowana w '.$time.' sekund.';
  51. ?>


Czas bez sprawdzania to ok. 0.789s, a ze sprawdzeniem 26 sekund. Jak przyśpieszyć ten skrypt? Wiem, że te API jest wolne (i nie tylko ja mam takie spowolnienie), ale może dałoby się coś wycisnąć więcej z samego kodu np w pętli coś źle dałem.

//Edit:
Dostałem 4-5 sekund więcej przy walidacji dzięki wyrzuceniu
  1. $v = new Services_W3C_HTMLValidator();
poza pętle.
wookieb
Praktycznie nic nie zyskasz nawet gdybyś ten kod przepisał na C++. Po prostu tyle to będzie trwało. Poza tym po co Ci walidacja od W3C?
vegeta
Piszę crawlera. Nie ma może innej funkcji w PHP, która odczyta sam kod źródłowy strony, a nie wczyta całą stronę (file_get_contents)?
osl
przecież file_get_contents wczytuje Ci kod źródłowy wink.gif
vegeta
Dobra. A teraz pytanie z innej beczki.

Czy da się zrobić w AJAXie wyświetlanie po kolei zrobionych już ech? Na divach, ale nie wiem jeszcze jak to zrobić. Bo takie czekanie to może zabić człowieka.
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.