Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Skrypt nie przerabia większej ilości zdjęć
Forum PHP.pl > Forum > PHP
thomson89
Witam!

Wykonałem na potrzeby Allegro skrypt generujący kod do aukcji, wraz z szablonem i galerią. Skrypt ma kilka kroków: najpierw podaje dane opisu przedmiotu, a w drugim kroku podaje zdjęcia i ewentualnie kolory do nich.

Wszystko działało poprawnie, dopóki nie była potrzebna do przerobienia większa ilość zdjęć. Fotografie są duże, mają 4000x3000, i skrypt je przerabia do rozmiarów 500x375 i dodaje logo wodne.

Skrypt przerabia poprawnie 4 zdjęcia. Lecz gdy ustawię 6 zdjęć, i kliknę "Generuj" to formularz jakby od razu przeskakuje. Normalnie, gdy zdjęcia się przerabiają, pojawia się loader (na tej samej stronie).

Kod:
  1. include('simpleimage.php');
  2. include('znakwodny.php');
  3. $image = new SimpleImage();
  4.  
  5. $i = $_SESSION['dane_zdjec']['numerod'];
  6.  
  7. foreach($_FILES as $key => $value)
  8. {
  9. if(strstr($_SESSION['dane_zdjec']['nazwa'], '#'))
  10. {
  11. $plik_nazwa_doc = str_replace('#', $i, $_SESSION['dane_zdjec']['nazwa']).'.jpg';
  12. }
  13.  
  14. if($_SESSION['dane_zdjec']['nazwa'] == '$')
  15. {
  16. $plik_nazwa_doc = $value['name'];
  17. }
  18.  
  19. $_SESSION['dane_zdjec']['zdjecia'][$key] = $value['name'];
  20.  
  21. $plik_tmp = $value['tmp_name'];
  22. $plik_nazwa = $value['name'];
  23. $plik_rozmiar = $value['size'];
  24.  
  25. if(is_uploaded_file($plik_tmp)) {
  26. move_uploaded_file($plik_tmp, "tmp/$plik_nazwa_doc");
  27. }
  28.  
  29. $image->load("tmp/$plik_nazwa_doc");
  30.  
  31. $image->resizeToHeight(375);
  32.  
  33. $image->save("tmp/$plik_nazwa_doc");
  34.  
  35. $nr = explode('k', $key);
  36. $nr = $nr[1];
  37.  
  38. $kolor = $_SESSION['dane_zdjec']['kolor'.$nr];
  39. $polozenie = $_SESSION['dane_zdjec']['polozenie'.$nr];
  40.  
  41. switch($polozenie)
  42. {
  43. case 'left;top':
  44. $hpos = PhpGdWatermarker::HALIGN_LEFT;
  45. $vpos = PhpGdWatermarker::VALIGN_TOP;
  46. break;
  47.  
  48. case 'right;top':
  49. $hpos = PhpGdWatermarker::HALIGN_RIGHT;
  50. $vpos = PhpGdWatermarker::VALIGN_TOP;
  51. break;
  52.  
  53. case 'left;bottom':
  54. default:
  55. $hpos = PhpGdWatermarker::HALIGN_LEFT;
  56. $vpos = PhpGdWatermarker::VALIGN_BOTTOM;
  57. break;
  58.  
  59. case 'right;bottom':
  60. $hpos = PhpGdWatermarker::HALIGN_RIGHT;
  61. $vpos = PhpGdWatermarker::VALIGN_BOTTOM;
  62. break;
  63. }
  64.  
  65. if($kolor == 'bialy')
  66. {
  67. $logo = 'logo1.png';
  68. }
  69. else
  70. {
  71. $logo = 'logo2.png';
  72. }
  73.  
  74. $watermarker = new PhpGdWatermarker($logo, $vpos, $hpos);
  75. $watermarker->setEdgePadding(10);
  76. $watermarker->applyWaterMark("tmp/$plik_nazwa_doc");
  77.  
  78. $i++;
  79. }
  80.  
  81. $ftp = ftp_connect('xxx');
  82. ftp_login($ftp, 'xxx', 'xxx');
  83. ftp_pasv($ftp, true);
  84.  
  85. foreach(glob('tmp/{*.jpg}', GLOB_BRACE) as $file)
  86. {
  87. if($file != '.' && $file != '..')
  88. {
  89. $nazwa_t = explode('/', $file);
  90. $nazwa = $nazwa_t[1];
  91. ftp_put($ftp, "zdjecia/$nazwa", $file, FTP_BINARY);
  92. rename($file, "przerobione/$nazwa");
  93. }
  94. }
  95. ftp_close($ftp);


Jestem w stanie udostępnić skrypt, lecz nie publicznie na forum gdyż za jego pomocą można by było nieźle namieszać na moim serwerze.

Proszę o pomoc!
mortus
Sprawdź i ewentualnie zwiększ w php.ini:
- memory_limit,
- upload_max_filesize,
- max_file_uploads,
- post_max_size (w szczególności).
thomson89
W php.ini nie mam takiej opcji: max_file_uploads

Ale resztę mam - pozwiększałem i działa.

Dzięki!
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.