2013-07-15 47 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可以处理与静态内容服务器的同步。 如果您需要配置方面的帮助,请提供具体问题的新帖子。