Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][MySql] Pętle, sprawdzanie pomoc w optymalizacji
webspy
post
Post #1





Grupa: Zarejestrowani
Postów: 186
Pomógł: 9
Dołączył: 3.03.2008

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


Witam,
Mam mały problem z długim działaniu skryptu.


Pobieram kod strony przez:
  1. $strona = implode ('', file ('http://strona.pl'));


(na wyciaganej stronie mam ok 300 pozycji podzielonych np po 40 na stronie)

Potem metodą preg_match_all wyciągam potrzebne dane:
  1. preg_match_all( '#<span>([0-9]{1,})</span>#sU', $strona, $ile, PREG_PATTERN_ORDER);

sprawdza mi ile jest stron

nastepnie mam petle ktora powtarza się tyle ile jest stron, i wyciąga kolejne dane z kodu strony.
  1. while ($ile <= $strony) {
  2. $strona2 = implode ('', file ('http://strona.pl/cos.php?p='.$ile.'));
  3. preg_match_all( "#<td class=\"kljlk\">(.+)</tr>#sU", $strona2, $obrazek, PREG_PATTERN_ORDER);


W tej petli jest nastepna która sprawdza po kolei przedmioty na tej stronie
  1. foreach ($obrazek[0] as $val) {
  2. $t++;
  3. }
  4.  
  5. for ($ile2=0; $ile2<=$t; $ile2++) {
  6.  
  7. //wyciaganie potrzebnych danych i zapisywanie w bazie
  8. //sprawdzanie również czy dany element jest już w bazie, jeśli jest to go już nie zapisuje
  9. // największy problem to taki że jak dodam w tym miejscu sprawdzanie (na odwrót) czy to co w bazie jest na stronie to za dlugo to chodzi i wywala błąd.
  10. $zapytanie44 = "SELECT * FROM przedmioty";
  11. $wykonaj4 = mysql_query ($zapytanie44);
  12. while($wiersz=mysql_fetch_array ($wykonaj4)) {
  13. $tytul = "".$wiersz['tytul']."";
  14. $id = "".$wiersz['id']."";
  15. if ($tytul == $nazwa) {
  16.  
  17. } else {
  18. $sql77 = "UPDATE `nazwa tabeli`.`przedmioty` SET `zmiana` = '0' WHERE `przedmioty`.`id` = '".$id."';";
  19.  
  20. $wykonaj77 = mysql_query ($sql77);
  21. } }


I tak w skrócie to wygląda, czy da się to jakoś zoptymalizować i użyć innych metod?

Proszę o jakieś podpowiedzi i funkcje których mogę użyć.
Z góry dziękuję za pomoc, pozdrawiam.


Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
webspy
post
Post #2





Grupa: Zarejestrowani
Postów: 186
Pomógł: 9
Dołączył: 3.03.2008

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


z takiego kodu da się wyciągnąć dany tekst metodą explode() ?

  1. <div class="naviLeftContent" id="categoriesList">
  2. <ul class="category_list_main">
  3. <li>
  4. <h3 class="inline"><a href="/listing.php/user?us_id=9915110&category=5" class="bold alleLink small">
  5. <span>Dom i Ogród</span></a></h3> <span class="smaller">(225)</span> </li>
  6. <li>
  7. <h3 class="inline"><a href="/listing.php/user?us_id=9915110&category=3" class="bold alleLink small">
  8. <span>Motoryzacja</span></a></h3> <span class="smaller">(92)</span> </li>
  9. <li>
  10. <h3 class="inline"><a href="/listing.php/user?us_id=9915110&category=16696" class="bold alleLink small">
  11. <span>Przemysł</span></a></h3> <span class="smaller">(31)</span> </li>
  12. <li>
  13. <h3 class="inline"><a href="/listing.php/user?us_id=9915110&category=10" class="bold alleLink small">
  14. <span>RTV i AGD</span></a></h3> <span class="smaller">(4)</span> </li>
  15. </ul>
  16. </div>


I chce wyciągnąć te dane miedzy <span class="smaller">dane</span>

Rozumiem że w ten sposób:
  1. $zmienna = explode ("<span class=\"smaller\">", $kod_strony);


Tylko że chciałbym szukać tylko tych elementów które są zawarte między <div class="naviLeftContent" id="categoriesList"> a nie szukać ich w całym kodzie strony. i metoda preg_match_all może to zrobić.

Musiałbym najpierw explode() - <div class="naviLeftContent" id="categoriesList"> a potem dopiero explode() - <span ....

Czy dobrze myślę?
Go to the top of the page
+Quote Post

Posty w temacie


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: 7.10.2025 - 22:34