2013-07-15 81 views
0

我想使用動態生成的圖像:nginx的+ PHP-FPM

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

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

用於圖像生成。但在這種情況下,我必須在第一代圖像上處理php-fpm加載(我們有大量請求,這是某種橫幅交換)。是否配置nginx等待第一個php-fpm調用處理到同一位置?

回答

0

通常這樣的實時處理實在是一個糟糕的主意,如果您在某個時候獲得高流量,它會嚴重影響您的系統,是否有辦法將這些圖像排隊處理,然後通過cron作業處理它們?

如果你仍然想這樣做,我會建議讓php腳本在完成時發出重定向響應,因爲你知道它不會花費很長時間來生成該圖像,或者使它在向瀏覽器提供正確的content-type後,直接回復圖像數據。

+0

這意味着第一個請求不會獲取圖像,所以隊列不是完美的解決方案。 – Misanthrope

0

這兩個要求相互咬合。一方面你的服務器不能處理衍生的php進程,而服務於大量的靜態文件,另一方面你需要實時動態內容。顯而易見的答案是將兩者分離到不同的機器上。您的生成塊然後是一個代理配置,將請求傳遞給專用圖像生成機器(或兩個,三個......)。生成器上的腳本應該返回結果並將其寫入磁盤。 Cron和rsync可以處理與靜態內容服務器的同步。 如果您需要配置方面的幫助,請提供具體問題的新帖子。