मैं इस समस्या के साथ दिनों (और रातें) के लिए अटक गया।
इसके अलावा, प्रदाता स्मृति सीमा एक से दूसरे में भिन्न होती है। और PHP में memory_limit
को साझा सर्वर पर काम नहीं करता है, प्रदाता आम तौर पर राम को सीमित करते हैं, भले ही phpinfo()
कहता है कि आपको 128 एमओ (उदाहरण के लिए प्रति प्रक्रिया 1 एम 1 रैम 60 एमओ तक सीमित है)।
लेकिन मैं अंत में कुछ काफी यहाँ कुशल पाया: http://www.imagemagick.org/Usage/files/#massive
यह जरूरत imagemagick
, लेकिन मुझे पता चला कि प्रदाताओं के सबसे मूल रूप से अपने सर्वर, यहां तक कि साझा वालों पर इस प्रदान करता है।
exec('env MAGICK_TMPDIR=<tmp_dir> nice -5 convert -limit memory 32 -limit map 32 -resize 800x600 huge.jpg reasonable.jpg');
के रूप में यह कहा है:
env MAGICK_TMPDIR=<tmp_dir>
राम (एक तरह से)
nice -5
भी की प्राथमिकता बदलने के लिए एक यूनिक्स कमांड है अनुकरण करने के लिए ImageMagick के लिए एक अस्थायी निर्देशिका की स्थापना एक प्रक्रिया (http://en.wikipedia.org/wiki/Nice_(Unix))
convert ...
ImageMagick कमांड लाइन
असली सौदा के बारे में -limit memory 32
और -limit map 32
है। इस तरह आप बाइनरी द्वारा उपयोग की गई स्मृति को सीमित करते हैं (यहां: 32 एमओ)। आपको शायद अपने सर्वर के मानों से मेल खाने के लिए मूल्यों को फिट करने की आवश्यकता होगी (आम तौर पर PHP आपको अधिकतम आवंटित स्मृति बताता है जब यह आपको घातक त्रुटि देता है। मेरा सुझाव है कि आप इस मान को 2 या 4 को confortable के लिए विभाजित करें)।
मैं अपने PHP में कुछ अन्य लाइनों डाल करने के लिए कुछ जमानत मुद्दों से बचने की जरूरत:
ignore_user_abort(true); // ignore user abort : let the script finish resizing even if user aborts
set_time_limit(0); // ignore server timeout
putenv('MAGICK_THREAD_LIMIT=1'); // limit the number of thread for the binary. Very important in my case
आशा सब में मदद मिलेगी ... अगर convert
पर उपलब्ध है
पता करने के लिए आपके सर्वर, आप (PHP में) यह कोशिश कर सकते हैं:
$out = array();
exec('which convert 2>&1', $out);
print_r($out);
कि आप पैट देता है यदि बाइनरी है, तो मौजूद है।
स्रोत
2014-03-21 01:42:45
ImageMagick लोड पर कुशल आकार बदलने की अनुमति देता है, इस उत्तर में और विवरण देखें: http://stackoverflow.com/questions/12661/efficient-jpeg-image-resizing-in-php/4613341#4613341 –