![]() |
![]() |
![]() ![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 80 Pomógł: 0 Dołączył: 12.05.2005 Ostrzeżenie: (0%) ![]() ![]() |
Witam!
Problem polega na optymalizacji operacji w trakcie przetwarzania obrazka - zmiana rozdzielczosci i jego ponowne zapisanie! Przesyłanych pól w formularzu jest 7. Problem zaczyna się kiedy wysyłam pliki graficzne których wielkości przekracza 256 kb - i jest ich kila w pewnym momencie pojawia się błąd o treści: Fatal error: Allowed memory size of 20971520 bytes exhausted (tried to allocate 8704 bytes) in /home/.../ftp/.../spr3.php on line 101 Serwer na którym pracuje ma wprowadzone ograniczenie 20MB. Może znacie sposób obróbki obrazka inny niż ja - lub jak podzielić mój skrypt na operacje aby się zmieścić w limicie?? Oto kod!:
a to wynik działania tego formularza: array ( 'action' => 'd1', 'w' => 'Zapisz', ) array ( 'zdj_p1' => array ( 'name' => 'list motywacyjny1.jpg', 'type' => 'image/jpeg', 'tmp_name' => '/tmp/php9Izb0I', 'error' => 0, 'size' => 258787, ), 'zdj_p2' => array ( 'name' => 'List[Andrzej].GIF', 'type' => 'image/gif', 'tmp_name' => '/tmp/phpjCXT0F', 'error' => 0, 'size' => 183603, ), 'zdj_1' => array ( 'name' => 'error.jpg', 'type' => 'image/jpeg', 'tmp_name' => '/tmp/phpiTN7n4', 'error' => 0, 'size' => 365525, ), 'zdj_2' => array ( 'name' => '', 'type' => '', 'tmp_name' => '', 'error' => 4, 'size' => 0, ), 'zdj_3' => array ( 'name' => '', 'type' => '', 'tmp_name' => '', 'error' => 4, 'size' => 0, ), 'zdj_4' => array ( 'name' => '', 'type' => '', 'tmp_name' => '', 'error' => 4, 'size' => 0, ), 'zdj_5' => array ( 'name' => '', 'type' => '', 'tmp_name' => '', 'error' => 4, 'size' => 0, ), ) Nazwa - list motywacyjny1.jpg Typ - image/jpeg Wielko�ć kb - 258787 to jest JPG Fatal error: Allowed memory size of 20971520 bytes exhausted (tried to allocate 8704 bytes) in /home/.../ftp/.../spr3.php on line 101 Ten post edytował smarcz 26.02.2007, 13:48:50 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 80 Pomógł: 0 Dołączył: 12.05.2005 Ostrzeżenie: (0%) ![]() ![]() |
Tak więc po kolejnym dniu prób - stwierdzam - zmiana kompresji -> znikomy efekt (ale zawsze coś) Jeszcze dziś robiłem testy i co dziwnego odkryłem - bawiłem się z dodawaniem plików jpg z aparatu cyfrowego - niektóre pliki o pojemności powyżej 1 MB prawie 2 MB załączały się przez formularz bez problemu mieszcząc się w dozwolonym buforze 20 MB. Owszem w trakcie wczytywania ImageCreateFrom?(IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) ($plik); pamięć bufora skacze do ponad 15 MB ale pliki przechodzą bez problemu. Co ciekawe dołączałem pliki o mniejszej rozdzielczości - np.: 300 Kb - także jpg - i takie pliki w trakcie obróbki ImageCreateFrom?(IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) ($plik); przekraczały znacząco zajętość bufora 20 MB. Dlaczego?
Moje pytanie - jak określić przed wczytaniem do ImageCreateFrom?(IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) ($plik); ile plik może potrzebować pamięci na taką operację? Szukałem w manualu opisu ile ta bibloteka GD potrzebuje pamięci do przetworzenia 1 pixela obrazka i nie znalazłem. Może macie jakieś doświadczenia z takim zagadnieniem? Lub inaczej jak stworzyć dla takiego formularza obsługę błędów aby nie pojawiał się komunikat Fatal error i przerywał działanie skryptu - tylko ładnie wcześniej użytkownika poinformować że dodawany plik nie spełnia wymagań? Może to tędy droga - aby wcześniej wywalić błąd a nie przerywać działania skryptu co jest nieporządane w trakcie zapisu wyników do bazy danych MySQL Z góry dzięki za wszelkie podpowiedzi. Jakieś gotowe skrypty - możecie pisać na maila smarcz@interia.pl |
|
|
![]() ![]() |
![]() |
Aktualny czas: 15.10.2025 - 05:29 |