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-&gt;file_location, $this-&gt;file_thumb_location, KU_REPLYTHUMBWIDTH, KU_REPLYTHUMBHEIGHT))** exitWithErrorPage(_gettext('Could not create thumbnail.'));

(请注意,该错误不会出现)

另一个 post.php(第 235 行): $upload_class-&gt;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 错误

截图上传录屏gif上传工具推荐

Telegram bot api:GIF 上传/下载大小的问题

制作gif格式的图片

如何做会动的GIF图片?

希望播放非编码视频上传,然后通过 FFMPEG 从选择点导出 gif