location /images/ {
try_files $uri @generateImage;
}
location @generateImage {
# pass to backend php-fpm
}
用於圖像生成。但在這種情況下,我必須在第一代圖像上處理php-fpm加載(我們有大量請求,這是某種橫幅交換)。是否配置nginx等待第一個php-fpm調用處理到同一位置?
location /images/ {
try_files $uri @generateImage;
}
location @generateImage {
# pass to backend php-fpm
}
用於圖像生成。但在這種情況下,我必須在第一代圖像上處理php-fpm加載(我們有大量請求,這是某種橫幅交換)。是否配置nginx等待第一個php-fpm調用處理到同一位置?
通常這樣的實時處理實在是一個糟糕的主意,如果您在某個時候獲得高流量,它會嚴重影響您的系統,是否有辦法將這些圖像排隊處理,然後通過cron作業處理它們?
如果你仍然想這樣做,我會建議讓php腳本在完成時發出重定向響應,因爲你知道它不會花費很長時間來生成該圖像,或者使它在向瀏覽器提供正確的content-type
後,直接回復圖像數據。
這兩個要求相互咬合。一方面你的服務器不能處理衍生的php進程,而服務於大量的靜態文件,另一方面你需要實時動態內容。顯而易見的答案是將兩者分離到不同的機器上。您的生成塊然後是一個代理配置,將請求傳遞給專用圖像生成機器(或兩個,三個......)。生成器上的腳本應該返回結果並將其寫入磁盤。 Cron和rsync可以處理與靜態內容服務器的同步。 如果您需要配置方面的幫助,請提供具體問題的新帖子。
這意味着第一個請求不會獲取圖像,所以隊列不是完美的解決方案。 – Misanthrope