Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Dlugo wykonujacy sie skrypt - jakie rozwiazanie
Forum PHP.pl > Forum > Przedszkole
1ukas
Witam,
napisalem skrypt w PHP, ktory pobiera dane (grafiki) z innej strony. Na poczatku danych bylo malo i nie bylo problemu z czasem wykonywania skryptu, jednak z czasem danych zrobilo sie coraz wiecej i czasem czas wykonywania skryptu przekracza 5 min. Oczywiscie moge zwiekszac limit na serwerze, ale widze, ze nie tedy droga.

Czy ktos z bardziej doswiadczonych osob moglby poradzic mi co zrobic w takiej sytuacji? Czy przepisac skrypt na inny jezyk? Po pobraniu grafik nie sa juz dokonywane na nich zadne operacje.

Z gory dziekuje za porady.
wNogachSpisz
Jest niby coś takiego jak curl_multi, niestety, pisanie wielowątkowego kodu php jest bolesne.
1ukas
A moze PHP'em moglbym pobrac tylko linki do grafik i zapisac je w bazie MySQL a czyms innym pobrac pliki na podstawie danych z bazy?
Takie rozwiazanie wydaje sie rozsadniejsze. Niestety nie wiem co byloby tutaj najlepsze.
!*!
Zacznijmy od tego, co to znaczy że "pobierasz grafiki"? Na bazie adresu zapisujesz je u siebie na serwerze? Jak? Pokaż kod.
1ukas
Mam taka prosta petelke:

  1. for ($i=1; $i<=100; $i++)
  2. {
  3. $im = "http://adres.com/img/1/$i";
  4. $filename = "img/" .$i .".jpg";
  5. if (!is_dir('img')) {
  6. mkdir('img');
  7. }
  8. copy($im, ''.$filename.'');
  9. }
!*!
Tak byłoby lepiej

  1. for ($i=1; $i<=100; $i++)
  2. {
  3. $im = file_get_contents('http://adres.com/img/1/'.$i);
  4. $filename = 'img/'.$i.'.jpg';
  5.  
  6. if(!is_dir('img'))
  7. {
  8. mkdir('img');
  9. }
  10. file_put_contents($filename, $im);
  11. }


Mikrozmiany, ale nie uzależniasz się od copy, które nie zawsze działa.
I o jakich ilościach mówimy? 10k, milion?
1ukas
Ilosci to 0,5-2k za jednym razem, ale rozmiar jednego pliku moze dochodzic do 1MB.
wNogachSpisz
Zależy jakie są Twoje wymagania, czy np. wystarczy że z początku znać będziesz tylko rozmiar obrazka (metoda HEAD), pobieranie mógłbyś w ów czas odłożyć na później,
1ukas
A jak w praktyce wykonac takie pobranie w pozniejszym czasie?
wNogachSpisz
zapewne wrzucic do bazy danych, nazwać tabelę "quened_downloads", link do pliku w kolumnie "image_link" i atakować CRONem
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.