Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [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
wookieb
post 4.02.2011, 07:22:00
Post #2





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




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?


--------------------
Go to the top of the page
+Quote Post
vegeta
post 4.02.2011, 09:46:43
Post #3





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

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


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)?

Ten post edytował vegeta 4.02.2011, 09:48:49
Go to the top of the page
+Quote Post
osl
post 4.02.2011, 09:51:40
Post #4





Grupa: Zarejestrowani
Postów: 260
Pomógł: 41
Dołączył: 6.04.2009
Skąd: Gdańsk/okolice

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


przecież file_get_contents wczytuje Ci kod źródłowy wink.gif
Go to the top of the page
+Quote Post
vegeta
post 4.02.2011, 10:28:42
Post #5





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

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


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.
Go to the top of the page
+Quote Post

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: 12.06.2025 - 13:57