Динамически генерируемые изображения: nginx + php-fpm

Я хотел бы использовать

location /images/ {
    try_files $uri @generateImage;
}

location @generateImage {
    # pass to backend php-fpm
}

для генерации изображения. Но в этом случае я должен позаботиться о загрузке php-fpm при первом поколении некоторого изображения (у нас огромное количество запросов, это своего рода обмен баннерами) . Можно ли настроить nginx для ожидания обработки первого вызова php-fpm в том же месте?

2 ответа

Обычно обработка в реальном времени, подобная этой, действительно плохая идея. Если в какой-то момент вы получите большой трафик, это плохо скажется на вашей системе. Есть ли способ, которым вы можете поставить эти изображения в очередь для обработки, а затем обработать их заданием cron?

И если вы все еще хотите сделать это по-своему, я бы посоветовал сделать так, чтобы скрипт php выдавал ответ перенаправления, когда это было сделано, учитывая, что вы точно знаете, что генерация этого изображения не займет много времени, или заставьте его отвечать с изображением. данные сразу после предоставления правильных content-type в браузер.

Эти два требования кусают друг друга. С одной стороны, ваш сервер не может обрабатывать порождаемые php-процессы, обслуживая большое количество статических файлов, с другой стороны, вам нужен динамический контент в режиме реального времени. Очевидный ответ - разделить их на разные машины. Затем ваш блок генерации - это прокси-конфигурация, которая передает запрос на выделенную машину генерации изображений (или два, три,....). Скрипт генератора должен вернуть результат, а также записать его на диск. Cron и rsync могут обрабатывать синхронизацию со статическими серверами контента. Если вам нужна помощь с вашим конфигом, создайте новый пост с конкретными вопросами.

Другие вопросы по тегам