Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]file_get_contents OPYMALIZACJA kodu. Strasznie długie ładownie.
kielich
post
Post #1





Grupa: Zarejestrowani
Postów: 442
Pomógł: 4
Dołączył: 28.12.2008
Skąd: Warszawa

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


WItam,
Napisałem klasę, lecz dane pobierne są ze sklepu intenetowego. FIRMA => części => rodzaj_cześci => szczegóły towaru. Informacje wyszukują się idealnie. Przy "ostatnim etapie" - wyciąganie ceny produktu. Skrpty straaaasznie muli , ponad 5min co składnia mnie do nacisnięcia "ESC" (IMG:style_emoticons/default/sad.gif) . Proszę o pomoc

  1. <?php
  2.  
  3. class Klocki{
  4.  
  5. const wzorzec_links = '#<li><a.*href=\"([^\"]*)\".*>([^\"]*)<\/a><\/li>#';
  6. const wzorzec_price = '#<span itemprop="price">([^\"]*)</span>#';
  7. const wzorzec_name = '#<span itemprop="name">([^\"]*)</span>#';
  8. private $linksAll = array();
  9.  
  10.  
  11.  
  12. private function getData() {
  13. $output = file_get_contents('link');
  14. preg_match_all(self::wzorzec_links, $output, $links);
  15.  
  16. return $links[1];
  17. }
  18.  
  19. private function parseData() {
  20. foreach(Klocki::getData() as $linkMore){
  21. preg_match_all(self::wzorzec_links, file_get_contents($linkMore), $links);
  22. foreach($links[1] as $linksMore){
  23. preg_match_all(self::wzorzec_links, file_get_contents($linksMore), $links);
  24. foreach($links[1] as $link){
  25. $linksAll[] = $link;
  26. }
  27. }
  28. }
  29. return $linksAll;
  30. }
  31.  
  32. public function getInfo(){
  33. if(Klocki::parseData() == true){
  34. foreach(Klocki::parseData() as $link){
  35. $outputs = file_get_contents($link);
  36. preg_match(self::wzorzec_price, $outputs, $price);
  37. preg_match(self::wzorzec_name, $outputs, $name);
  38. }
  39. }
  40. }
  41. }
  42.  
  43. Klocki::getInfo();
  44.  
  45.  
  46.  
  47.  
  48.  
  49.  
  50.  
  51.  
  52. ?>
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
!*!
post
Post #2





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

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


Nie rozumiem problemu. Mam link A, pobieram jego źródło w celu sprawdzenia czy są linki do strony B, jak są, zapisuję je do tablicy. Jak już mam wszystkie linki, sprawdzam czy znajduje się w nich nazwa i cena, jak tak, uzupełniam tablice. Koniec. Na moje oko jest to jedna pętla, max 2.
Go to the top of the page
+Quote Post
artuross
post
Post #3





Grupa: Zarejestrowani
Postów: 164
Pomógł: 9
Dołączył: 30.12.2011

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


Cytat(!*! @ 2.04.2013, 14:06:38 ) *
Nie rozumiem problemu. Mam link A, pobieram jego źródło w celu sprawdzenia czy są linki do strony B, jak są, zapisuję je do tablicy. Jak już mam wszystkie linki, sprawdzam czy znajduje się w nich nazwa i cena, jak tak, uzupełniam tablice. Koniec. Na moje oko jest to jedna pętla, max 2.


On ma racje, w jego przypadku na podstronach znajduja sie kolejne podstrony, wiec nie wystarczy wejsc w jeden link, zeby uzyskac cene. Trzeba wejsc na kolejny i kolejny.

Kielich, czemu sie dziwisz, ze trwa to 5 minut? Skoro polaczenie z tyloma stronami troche trwa, dodatkowo to musi byc obrobione za pomoca regexp, ktory tez do najszybszych nie nalezy. Moze powienienes sprawdzic jaki zakres bitow potrzebujesz pobrac? Mniej szukania, dzialalby ciut szybciej, aczkolwiek nadal jest to z 500 stron lub cos w tym stylu.
Go to the top of the page
+Quote Post

Posty w temacie
- kielich   [PHP]file_get_contents OPYMALIZACJA kodu. Strasznie długie ładownie.   2.04.2013, 12:25:01
- - jaslanin   podrzuć jakieś dane cobyśmy mogli sobie po testowa...   2.04.2013, 12:30:20
- - kielich   [PHP] pobierz, plaintext private function getData...   2.04.2013, 12:33:37
- - !*!   To co podałeś jest bez sensu. A jak chcesz optymal...   2.04.2013, 12:37:49
- - kielich   No dobrze ale pętli i tak się nie pozbędę. Muszę j...   2.04.2013, 12:46:11
- - !*!   Obróbka istniejącej zmiennej, to nie to samo co ob...   2.04.2013, 12:48:49
- - kielich   ALe ja przechodzę z linku na link. mając tablice l...   2.04.2013, 12:56:55
- - !*!   Nie rozumiem problemu. Mam link A, pobieram jego ź...   2.04.2013, 13:06:38
|- - artuross   Cytat(!*! @ 2.04.2013, 14:06...   2.04.2013, 14:06:07
- - kielich   FIRMA => części => rodzaj_cześci => szcze...   2.04.2013, 13:10:42
- - kielich   Dokładnie jest to 5160 linków , przerobiłem że mam...   2.04.2013, 14:08:30
- - artuross   Czlowieku zrozum, ze tego nie przyspieszysz! N...   2.04.2013, 14:14:50
- - !*!   Jest różnica między 200 a 5160, taka tyci. Cytat...   2.04.2013, 14:19:36
|- - artuross   Cytat(!*! @ 2.04.2013, 15:19...   2.04.2013, 14:30:19
- - kielich   CytatChyba że wykona to równolegle, skrypt podziel...   2.04.2013, 14:27:46
- - !*!   Nie mam pojęcia o działaniu równoległym w PHP (i c...   2.04.2013, 14:34:02
|- - artuross   Cytat(!*! @ 2.04.2013, 15:34...   2.04.2013, 14:41:08
- - !*!   Będzie szybciej, bo skrypt nie będzie czekał aż wy...   2.04.2013, 14:45:25
- - artuross   Tylko, ze gdy otwierasz karty w przegladarce otwie...   2.04.2013, 14:52:35
- - kielich   A w jaki sposób moge pobrać odpowienie bity - dług...   2.04.2013, 14:53:36
- - artuross   Mozesz dodac odpowiedni header, ktory poinstruuje ...   2.04.2013, 14:55:09
- - !*!   Dlatego wspomniałem na początku o tych pętlach, zr...   2.04.2013, 14:55:49


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

 



RSS Aktualny czas: 12.10.2025 - 01:58