Большие партии изображений для изменения размера и хранения - PullRequest
0 голосов
/ 02 июля 2011

Я использую PHP и Graphicsmagick, и у меня есть группа пользователей, загружающих пакеты изображений.

Эти пакеты запускаются от одного изображения до сотен, может быть, даже до тысячи.

Мне нужночтобы сохранить эти исходные загрузки на Amazon S3, мне также нужно изменить размер каждого изображения до трех разных размеров, а также сохранить эти копии на Amazon S3.

Это должно быть как можно более в реальном времени.

Как бы вы разработали это для лучшей производительности?

1 Ответ

2 голосов
/ 02 июля 2011

Довольно просто достичь.Когда пользователь загружает изображение, добавьте его в ( lpush ) очередь сообщений.Когда вы добавляете сообщение в очередь, вы не мешаете пользователю вашего сайта работать (ожидаете), а вместо этого делаете это в автономном режиме.Я бы выбрал redis , потому что он очень мощный, быстрый, простой в использовании.Вы должны изучить Redis, потому что вы также можете использовать его для своих нужд кэширования и даже больше.Это мило.Затем вы создаете пару рабочих процессов, которые не делают ничего другого, кроме как обрабатывают ( blpop ) сообщение в очереди (один за другим).Они получают сообщение из очереди, выполняют задание (изменение размера изображения) и по окончании получают следующее сообщение из очереди.Это так просто и очень быстро.Особенно, если вы используете расширение PHP, которое компилируется в C (C - очень быстрый язык), например, phpredis .

PS: хороший вводный урок, объясняющий redis => http://simonwillison.net/static/2010/redis-tutorial/ (должен прочитать;))

...