Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: file_exists, curl i długie wykonywanie skryptu.
Forum PHP.pl > Forum > PHP
batman
Napisałem skrypt, aktualizujący ofertę sklepu. Skrypt ten chodzi w cronie raz na dobę i zaciąga pliki xml od różnych producentów.

Po ściągnięciu i zapisaniu pliku xml lokalnie, następuje jego walidacja oraz przetwarzanie. Zauważyłem, że wąskim gardłem całego systemu jest curl (też mi nowina winksmiley.jpg ). Oferta składa się z około 1000 produktów. Do każdego z nich podczepione jest kilka obrazków (średnio 8). Każdy obrazek waży mniej więcej 20 kB. Zaciąganie takiej ilości obrazków za każdym razem jest bez sensu, dlatego też sprawdzam przy pomocy funkcji file_exists, czy aktualnie wybrany obrazek jest już ściągnięty. I teraz pojawia się problem. Jeśli obrazki są ściągane, wówczas skrypt mieli 2 - 3 h. Bez sprawdzania czy zdjęcia istnieją około 4h. Bez ściągania zdjęć 30 min.

Czy funkcja file_exists rzeczywiście tak zamula, czy mam szukać "wąskiego gardła" w innym miejscu?
php programmer
Cytat
Jeśli obrazki są ściągane, wówczas skrypt mieli 2 - 3 h.
Bez sprawdzania czy zdjęcia istnieją około 4h.
Bez ściągania zdjęć 30 min.


Przecież z tego co napisałeś wcale nie wynika, żeby file_exists Ci dużo czasu zajmował?
batman
Jak nie wynika?

Nie ściągam zdjęć - 30 min.
Ściągam zdjęcia ze sprawdzaniem czy istnieją - 2-3 h.
Ściągam zdjęcia bez sprawdzania - 4h.

Oczywiste jest, że curl-a używam dopiero w momencie, gdy nie ma zdjęcia. A to czy nie ma zdjęcia spradzam używając file_exists.

Tak się składa, że zdjęcia istnieją, więc teoretycznie powinno działać znacznie szybciej.
php programmer
Może masz błąd w niektórych ścieżkach np brak bacvkslasha

  1. <?php
  2. file_exists('katalog/katalogzdjecie.jpg');
  3. ?>


i ściąga bo myśli że zdjeć nie ma
batman
Jeśli wiesz o co może chodzić to lepiej nie pisz.

Jeśli ścieżki byłyby źle napisane, wówczas fotki by się nie zapisały. Ścieżki są poprawne, instrukcje warunkowe i pętle też. Zmniejszyć ilości zapytań też już się nie da (dlatego skrypt się wykonuje 30 min. bez zasysania zdjęć).
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.