GIF 上传的神秘问题?
Posted
技术标签:
【中文标题】GIF 上传的神秘问题?【英文标题】:Mystery issue with GIF upload? 【发布时间】:2011-10-02 13:23:32 【问题描述】:好的,所以每当我将这个 GIF 上传到我的开发板 (nginx+php-FPM) 时,我都会变慢,直到最终出现 504 网关超时,好吧,所以我知道你在想什么,“继续,然后修复那些 nginx.conf 和 php-fpm 设置”,我昨晚将它们调整到接近完美,我的服务器现在运行良好。然而,一个特定的 GIF 仍然搞砸了,运行 php-FPM 几乎 100%(我的服务器中有一个很棒的***四核处理器,我的服务器绝不是原始的)。
所以想知道它在哪里变得更奇怪吗?我已经上传了 10MB 的 GIF,其尺寸比以防万一(导致问题的 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
【问题讨论】:
我刚刚在 error_log 中找到了一些信息:2011/10/02 13:44:33 [warn] 76825#0: *250 客户端请求正文被缓冲到临时文件 /var/tmp /nginx/client_body_temp/0000000008,客户端:MY.IP..,服务器:.org,请求:“POST /post.php HTTP/1.1”,主机:“www.”,引用者:“www.” 2011/10/02 13:45:59 [错误] 76825#0: *250 上游过早关闭连接,同时从上游读取响应标头,客户端:MY.IP.AD..,服务器:.org,请求:“POST / post.php HTTP/1.1”,上游:“fastcgi://unix:/tmp/php.sock:”,主机:“www.”,引用者:“www.” 您好,您解决了吗?请与他人分享 【参考方案1】:您是否尝试在 nginx 配置中设置 client_body_buffer_size
指令?
在此处查看更多信息:http://www.lifelinux.com/how-to-optimize-nginx-for-maximum-performance/
【讨论】:
以上是关于GIF 上传的神秘问题?的主要内容,如果未能解决你的问题,请参考以下文章
Hapi、Joi 和 Formdata 上传出现神秘的间歇性 CORS 错误