Проблемы с imagick

MiksIr

miksir@home:~$
Напоминает анекдот про бензопилу.

Хотя, конечно, с удовольстием бы послушал success story о реализованных Фанатом системах по работе с изображениями. А так как он свое мнение высказал, надеюсь, ему больше в этой теме делать нечего.

По-этому по делу.

Форк - очень тяжелая операция. Ясно, что нам важно не само время, а соотношение между временем работы над изображением и затратами на форк, которые в большинстве случаев будут константой. Например, для создания превьюшки из файла в 450кб этот оверхед у меня около 6-10%, на файле 115к - порядка 15%. Т.е. очевидно, что чем легче операции, которые мы делаем, тем выгднее использовать расширение. Замечу, что это мои цифры. В реальности, в зависимости от соотношения загруженности процессора, файловой системы и памяти (файлового кеша) эти проценты могут меняться.

"Оффлайн" о котором толковал Фанат - это вообще другая песня. К вопросу форк/не форк никакого отношения не имеющая. "Офлайн" реализован точно так же, как и "Онлайн" - расширение или форк, разница лишь в том, когда пользователь получает ответ от сервера - когда изображение уже готово, или когда оно поставлено в очередь. В последнем случае пользователь может не увидеть сразу же свою новую аватарку и сильно расстроиться.

По-этому, когда мы делаем легкие операции над файлами и нам важен наш пользователь - "онлайн" вполне очевиден. А теперь вспоминаем, что я писал про легкие операции и форк выше. Т.е. для "онлайна" очевидно использовать расширение, а это между делом большая часть всех операций в вебе, если только вы не делаете специализированный сервис по работе с изображениями.

Для "оффлайн" с его трудоемкими операциями потери на форк не велики, так что менее принципиально что использовать. Хотя, у exec метода кроме форка есть еще маленькие проблемы с ловлей/анализом ошибок, да и просто с поиском convert в файловой системе.

А в плюсах... ну в плюсах, наверно, потакание своей лени, и то актуально это лишь в случае хорошего знакомства c convert ранее, ибо его синтаксис далек от совершенства.
 

WMix

герр M:)ller
Партнер клуба
MiksIr
да не, все он правильно говорит, можно и convert писать, задача обычно короткая,... я пытался придумать задачку которую легко решить разширением, но сложно скриптом, фантазии не хватило... есть разные задачи.. но я обрабатывал сотнями тысяч изображений исключительно разширением imagick...
Оффлайн отличен, что нет нагрузки пользователями, можно и напаралелить и пускай процессор отрабатывает затраты...

единственное непонятна резкость ответа... ... вы все ПИ... а я Д'Артаньян.. к чему о чем.. писал бы сразу на php.net о их больной фантазии реализовать столь замечательный консольный конвертр в библиотеку, которую нехочется изучать!
 

Фанат

oncle terrible
Команда форума
Ясно, что нам важно не само время, а соотношение между временем работы
Вам, ламерам, это действительно важно.
Исходя из этого тезиса у вас и одинарные кавычки быстрее двойных.
 

MiksIr

miksir@home:~$
> Оффлайн отличен, что нет нагрузки пользователями, можно и напаралелить и пускай процессор отрабатывает затраты...
А онлайн напараллелить нельзя и процессор будет простаивать?
Офлайн позволяет делать очередь. Если ваш сервер справляется в пиках с текущим потоком - никакой разницы в "напаралелить и пускай процессор отрабатывает затраты" нет.

Насчет сложно / легко речи не шло, хотя у меня на некоторых продакшн серверах стоит 6.3.5 ImageMagic в котором нет конструкции -thumbnail 100x100^ который появился только в 6.3.8. И банальный cropThumbnailImage решается как-то так http://www.imagemagick.org/Usage/resize/#space_fill
А версии софта просто так на продакшн серверах не меняют, что бы угодить кому-то то.
 

MiksIr

miksir@home:~$
вот еще одно оскорбление... школьник!
Он не школьник, он просто хам. Ну воспитали его плохо, что поделать. А потом с школотой разной общаться много пришлось, а, как известно, с кем поведешься...
Мне жалко его.
 

WMix

герр M:)ller
Партнер клуба
А онлайн напараллелить нельзя и процессор будет простаивать?
можно конечно, если простаивает!...но задачи разные, одно это пользователи, другое картинки... пользовательский сервер хочется сделать легким, а дома нехай работает...
 

MiksIr

miksir@home:~$
можно конечно, если простаивает!...но задачи разные, одно это пользователи, другое картинки... пользовательский сервер хочется сделать легким, а дома нехай работает...
Не.. понимаете.. офлайн - это не значит, что вы слили на диск фотки с сверера, пришли домой, прокатали обработку фоток, а завтра отнесли обратно =))
Офлайн - это когда после приема от пользователя фотки ему сразу говорится "ок" и отправляется сообщение в менеджер очереди - есть новая работа.
 

WMix

герр M:)ller
Партнер клуба
когда 5 мио фоток, они уже давно не лежат на пользовательском сервере... дома, на рабочем сервере в бюро, на виртуальном сервере в нюрнберге, в данном случае не важно.. важно что одну и туже фотку на каждый клик не просят.. важно что нагрузка другая...
 

Zvook

Новичок
У меня задачи примитивные, обрабатывать тяжелые картинки в большом количестве не нужно. Нужно элементарно отресайзить картинку, ну и может быть ватермарк на нее наложить, причем операция довольно редкая и производится только админом, так что в оффлайн я конечно ничего уводить не буду ) Уже сделал напрямую, екзеком.

Но мне все же интересно, тут же дело принципа, наверное. Что не так? Дллка подоходит, пхп собирается, phpinfo() говорит что Imagick подключен, а при вызове его empty_response...
 

WMix

герр M:)ller
Партнер клуба
чаще всего у всех такие примитивные задачи,...
пересобери php как описано, спокойно шаг за шагом, все получится... я понимаю что в windows нужно тянуть visual-studio, но раз уже ты там работаешь у тебя нет выбора,
яб посоветывал linux поставить, но чувствую что из-за imagick такое предлагать не место...
если в мире нет готовой dll то вероятно этому есть причина, поэтому делай как предлагают
или пользуйся консольным инструментом
 

Zvook

Новичок
чаще всего у всех такие примитивные задачи,...
пересобери php как описано, спокойно шаг за шагом, все получится... я понимаю что в windows нужно тянуть visual-studio, но раз уже ты там работаешь у тебя нет выбора,
яб посоветывал linux поставить, но чувствую что из-за imagick такое предлагать не место...
если в мире нет готовой dll то вероятно этому есть причина, поэтому делай как предлагают
или пользуйся консольным инструментом
Спасибо добрый человек :)
На линуксе то все работает нормально, как всегда, там подобного рода проблемы возникают очень редко. Но у меня сейчас такая ситуация что нужно сделать проект именно на винде, объяснять не буду, просто факт :)
Сделал консольными командами :)
 

MiksIr

miksir@home:~$
PHP есть Thread-Safe и Non Thread-Safe. Т.е. нужно поставить NTS PHP, и к нему NTS экстеншн. И запускать это все как fastcgi или cgi :)
 

fixxxer

К.О.
Партнер клуба
Запускать php через cgi и считать форки-execи на convert это прекрасная идея!
 

MiksIr

miksir@home:~$
error log для поиска проблем креша из-за проблем в экстеншене? ну ищите =)
 

fixxxer

К.О.
Партнер клуба
NTS на TS-cборке (или наоборот) просто не подключится, о чем и будет сообщение в еррор логе.
Для крэшей есть корки. На винде тоже есть, только по-другому называются.
 
Сверху