GIF上传的神秘问题?

时间:2011-10-02 13:23:33

标签: gd gif

好吧,所以每当我将这个GIF上传到我的主板(NGINX + PHP-FPM)时,我都会慢下来,直到最终504网关暂停,好吧,所以我知道你在想什么,“继续修复那些nginx.conf和php-fpm设置“,我昨晚将它们调整到接近完美,我的服务器现在运行得非常好。然而,一个特定的GIF仍然搞砸了,运行php-FPM几乎达到100%(我的服务器中有一个很棒的顶级四核处理器,我的服务器绝不是原始的)。

所以想知道它在哪里更奇怪?我已经上传了10MB的GIF,其尺寸大于实际情况(造成问题的大小约为600KB)并让服务器快速处理它们。

好的!所以让我们进入日志,error_log不输出任何与此问题有关的内容。所以我去了ahlead并在php-FPM配置中设置了一个慢速日志。

这是问题所在:    [02-Oct-2011 05:54:17] [pool www] pid 76004 script_filename = /usr/local/www/mydomain/post.php [0x0000000805afc6d8] imagefill() /usr/local/www/mydomain/inc/post.php:159 [0x0000000805afb908] fastImageCopyResampled() /usr/local/www/mydomain/inc/post.php:107 [0x0000000805af4240] createThumbnail() /usr/local/www/mydomain/classes/upload.php:182 [0x0000000805aeb058] HandleUpload() /usr/local/www/mydomain/post.php:235

好的,让我们看看post.php(第159行以粗体显示):                if (preg_match("/png/", $system[0]) || preg_match("/gif/", $system[0])) { $colorcount = imagecolorstotal($src_image); if ($colorcount <= 256 && $colorcount != 0) { imagetruecolortopalette($dst_image,true,$colorcount); imagepalettecopy($dst_image,$src_image); $transparentcolor = imagecolortransparent($src_image); **imagefill($dst_image,0,0,$transparentcolor);** imagecolortransparent($dst_image,$transparentcolor); }

第107行:     fastImageCopyResampled($dst_img, $src_img, 0, 0, 0, 0, $thumb_w, $thumb_h, $old_x, $old_y, $system);

upload.php,第182行(粗体):     **if (!createThumbnail($this->file_location, $this->file_thumb_location, KU_REPLYTHUMBWIDTH, KU_REPLYTHUMBHEIGHT))** { exitWithErrorPage(_gettext('Could not create thumbnail.'));

(注意,该错误未显示)

另一个post.php(第235行):     $upload_class->HandleUpload();

那我该怎么办?我怎样才能解决这个问题?我知道这是一个棘手的问题,但如果你们能给我任何意见,我们将不胜感激。

哦,如果有人好奇,这里是GIF:http://i.imgur.com/rmvau.gif

1 个答案:

答案 0 :(得分:0)

您是否尝试在nginx配置中设置client_body_buffer_size指令?

在此处查看更多内容:http://www.lifelinux.com/how-to-optimize-nginx-for-maximum-performance/