Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Przyśpieszenie skryptu
vegeta
post 3.02.2011, 22:58:08
Post #1





Grupa: Zarejestrowani
Postów: 122
Pomógł: 0
Dołączył: 9.11.2008

Ostrzeżenie: (10%)
X----


  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.

Ten post edytował vegeta 3.02.2011, 23:02:36
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 - 20:21