| Forum / php / fotografie - duże rozmiary |
| Autor | Wiadomość |
| ptaku
|
Posted: 24 Lip 2008 09:49:47 Witam. Tworze pewną galerie do której użytkownik zgodnie z jej założeniem będzie mógł wrzucać fotografie w dowolnej rozdzielczości (np 2200x2800px), na podstawie oryginału będą tworzone dwie kopie o mniejszych wymiarach, oraz miniaturka. Do zmniejszania fotografii używam ImageMagick i klasy Imagick (GD był strasznie pamięciożerny). Wszystko jest ok dla uploadu jednego/kilku zdjęcia, lecz gdy chce przerobić większą liczbe fotografii wrzucone na ftp dostaje błąd "PHP Fatal error: Maximum execution time of 30 seconds exceeded..." Moje pytanie jak rozwiązać ten problem, albo inaczej jakie rozwiązanie było by najlepsze do zmiany rozmiaru dużej ilości fotografii w wysokiej rozdzielczości. pozdrawiam |
| Bartosz Skorupa
|
Posted: 24 Lip 2008 10:47:54 Witam.
Tworze pewną galerie do której użytkownik zgodnie z jej założeniem będzie mógł wrzucać fotografie w dowolnej rozdzielczości (np 2200x2800px), na podstawie oryginału będą tworzone dwie kopie o mniejszych wymiarach, oraz miniaturka. Do zmniejszania fotografii używam ImageMagick i klasy Imagick (GD był strasznie pamięciożerny). Wszystko jest ok dla uploadu jednego/kilku zdjęcia, lecz gdy chce przerobić większą liczbe fotografii wrzucone na ftp dostaje błąd "PHP Fatal error: Maximum execution time of 30 seconds exceeded..." Moje pytanie jak rozwiązać ten problem, albo inaczej jakie rozwiązanie było by najlepsze do zmiany rozmiaru dużej ilości fotografii w wysokiej rozdzielczości. pozdrawiam Problem leży w tym że skrypt wykonuje się dłużej niż może (chodzi o ustawienia apachu) Ja problem galerii rozwiązałem nieco inaczej. W katalogu z galerią przechowuje to co wgrał user, natomiast podczas wyświetlania strony generuję miniaturkę w locie przez wywołanie ---------------- <img src="min.php?rx=150&name=m_dsc00794.jpg&dir=gallery/63" alt="Tau" border="0" ---------------- |
| Bartosz Skorupa
|
Posted: 24 Lip 2008 10:50:30 Witam.
Tworze pewną galerie do której użytkownik zgodnie z jej założeniem będzie mógł wrzucać fotografie w dowolnej rozdzielczości (np 2200x2800px), na podstawie oryginału będą tworzone dwie kopie o mniejszych wymiarach, oraz miniaturka. Do zmniejszania fotografii używam ImageMagick i klasy Imagick (GD był strasznie pamięciożerny). Wszystko jest ok dla uploadu jednego/kilku zdjęcia, lecz gdy chce przerobić większą liczbe fotografii wrzucone na ftp dostaje błąd "PHP Fatal error: Maximum execution time of 30 seconds exceeded..." Moje pytanie jak rozwiązać ten problem, albo inaczej jakie rozwiązanie było by najlepsze do zmiany rozmiaru dużej ilości fotografii w wysokiej rozdzielczości. pozdrawiam Problem leży w tym że skrypt wykonuje się dłużej niż może (chodzi o ustawienia apachu) Ja problem galerii rozwiązałem nieco inaczej. W katalogu z galerią przechowuje to co wgrał user, natomiast podczas wyświetlania strony generuję miniaturkę w locie. |
| krzysztof
|
Posted: 24 Lip 2008 11:17:50 Ja problem galerii rozwiązałem nieco inaczej. W katalogu z galerią
przechowuje to co wgrał user, natomiast podczas wyświetlania strony generuję miniaturkę w locie. Za każdym razem? Jak masz w galerii 50 oryginałów 2200x2800px to tez generujesz w locie miniaturke do każdego? |
| krzysztof
|
Posted: 24 Lip 2008 11:19:08 Witam.
Tworze pewną galerie do której użytkownik zgodnie z jej założeniem będzie mógł wrzucać fotografie w dowolnej rozdzielczości (np 2200x2800px), na podstawie oryginału będą tworzone dwie kopie o mniejszych wymiarach, oraz miniaturka. Do zmniejszania fotografii używam ImageMagick i klasy Imagick (GD był strasznie pamięciożerny). Wszystko jest ok dla uploadu jednego/kilku zdjęcia, lecz gdy chce przerobić większą liczbe fotografii wrzucone na ftp dostaje błąd "PHP Fatal error: Maximum execution time of 30 seconds exceeded..." Moje pytanie jak rozwiązać ten problem, albo inaczej jakie rozwiązanie było by najlepsze do zmiany rozmiaru dużej ilości fotografii w wysokiej rozdzielczości. http://pl.php.net/manual/en/info.configuration.php#ini.max-execution-time http://pl.php.net/manual/en/function.set-time-limit.php |
| Bartosz Skorupa
|
Posted: 24 Lip 2008 11:48:57 Ja problem galerii rozwiązałem nieco inaczej. W katalogu z galerią przechowuje to co wgrał user, natomiast podczas wyświetlania strony generuję miniaturkę w locie. Za każdym razem? Jak masz w galerii 50 oryginałów 2200x2800px to tez generujesz w locie miniaturke do każdego? Nie, ograniczam wyświetlenie na jednej stronie do kilki (<10) zdjęć. |
| krzysztof
|
Posted: 24 Lip 2008 12:45:24 Nie, ograniczam wyświetlenie na jednej stronie do kilki (<10) zdjęć.
Czyli jeśli 20 osób wejdzie jednoczesnie na taką stronę, to Twój serwer lezy? |
| Mik
|
Posted: 24 Lip 2008 13:32:37 To Cię nie broni przed przekroczeniem czasu wykonywania zadania. Albo limitujesz ilość wprowadzanych na raz zdjęć i od razu generujesz sobie jakieś wyjściowe miniatury, albo musiałbyś zastosować jakiś np. flashowy uploader plików, który za każdym razem będzie Ci ładować pojedyncze zdjęcie na serwer i obrabiać, a dla internauty będzie to taka wygoda, że od razu załaduje sobie ile tam chce zdjęć i kliknie "wyślij", pójdzie na herbatkę, wróci a wszystko zdąży się wysłać. pozdrawiam Mik ps. Zapraszam na www.doromi.net |
| Paweł Andziak
|
Posted: 24 Lip 2008 13:41:39 Moje pytanie jak rozwiązać ten problem, albo inaczej jakie rozwiązanie
było by najlepsze do zmiany rozmiaru dużej ilości fotografii w wysokiej rozdzielczości. Ja bym zapisywal duze zdjecia na serwerze, utworzyl sobie (np. w bazie danych) kolejke zdjec do przekonwertowania i np. z crona konwertowal sobie po kilka sztuk co pare minut. Dla przekonwertowanych wyswietlaj miniaturki, dla oczekujacych na konwersje jakas informacje "w trakcie konwersji" - moze tez w postaci pliku graficznego o rozmiarach tych miniaturek. Strona sie nie rozjedzie, przy malej ilosci zdjec bedziesz mial konwersje praktycznie na bierzaco, a jak ktos zapakuje strasznie duzo zdjec, to sie powoli wszystko przekonwertuje, a serwer nie umrze od obciazenia (tylko trzeba sprawdzac, czy ostatnio odpalony proces konwertujacy sie skonczyl). |
| K-len
|
Posted: 24 Lip 2008 14:07:17 [ciach] Problem leży w tym że skrypt wykonuje się dłużej niż może (chodzi o
ustawienia apachu) Ja problem galerii rozwiązałem nieco inaczej. W katalogu z galerią przechowuje to co wgrał user, natomiast podczas wyświetlania strony generuję miniaturkę w locie przez wywołanie ---------------- <img src="min.php?rx=150&name=m_dsc00794.jpg&dir=gallery/63" alt="Tau" border="0" ---------------- Tylko mi nie mów że generujesz "małą fotkę" z oryginału co każdą odsłonę ? |
| K-len
|
Posted: 24 Lip 2008 14:14:31 Witam.
Tworze pewną galerie do której użytkownik zgodnie z jej założeniem będzie mógł wrzucać fotografie w dowolnej rozdzielczości (np 2200x2800px), na podstawie oryginału będą tworzone dwie kopie o mniejszych wymiarach, oraz miniaturka. Do zmniejszania fotografii używam ImageMagick i klasy Imagick (GD był strasznie pamięciożerny). Wszystko jest ok dla uploadu jednego/kilku zdjęcia, lecz gdy chce przerobić większą liczbe fotografii wrzucone na ftp dostaje błąd "PHP Fatal error: Maximum execution time of 30 seconds exceeded..." Moje pytanie jak rozwiązać ten problem, albo inaczej jakie rozwiązanie było by najlepsze do zmiany rozmiaru dużej ilości fotografii w wysokiej rozdzielczości. pozdrawiam jak ktoś wrzuca foty przez stronę to konwertuj to na bieżąco, jeśli wgrywają to przez ftp to użyj cron-a cyklicznie wywoływanego i jak znasz perl-a (i jest zinstalowany) to użyj jego, jest bardziej wydajny od php. pozdro |
| ptaku
|
Posted: 25 Lip 2008 09:28:20 jak ktoś wrzuca foty przez stronę to konwertuj to na bieżąco,
jeśli wgrywają to przez ftp to użyj cron-a cyklicznie dzięki tak właśnie zrobiłem i działa doskonale pozdro |