PHP官方的进度支持不适用于Nginx+PHP via FastCGI。相关文章请参考使用Session来跟踪上传进度。该文最后的Warning表示Nginx会本身处理上传,而PHP就只能获得一个最终结果,不能跟踪过程。最后一个跟帖(来自s.zarges)也给出相同的警告。这样,就不得不找别的办法,好比APC之类。另外一个选择就是nginx-upload-module。php
这个模块由vkholodkov于5年前开发,如今已经不更新N久了。其源代码地址。这是文档。直接下载源代码。
下载完成后,解压:html
tar xvfz nginx_upload_module-2.0.11.tar.gz
代码恒久远,BUG永流传。多少年过去了,许多代码变得面目全非,许多Bug失去了原本面目,只剩下那一砣砣的Bug,提醒咱们曾经辉煌的过往。如今的Nginx相对5年前,已经修改了不少东西,好比ngx_http_read_request_body_t已经删除了to_write成员,而该成员被nginx-upload-module所须要。其结果就是nginx-upload-module没法编译。关于该问题的讨论请参考这个连接。咱们要感谢这个哥们:davromaniak,他修改了nginx-upload-module,修正了错误,使之能够经过编译。这是他的关于该问题修正的博文。咱们要作的就是下载他的修改,给nginx-upload-module打补丁。
下载的Patch文件名为 davromaniak.txt。nginx
使用如下命令:git
cp darvromaniak.txt [nginx_upload_module所在目录] patch ngx_http_upload_module.c davromaniak.txt
先从这个连接下载Nginx源码。而后编译:github
cd nginx-1.5.8 ./configure --add-module=[nginx_upload_module所在目录] make make install
在短暂的等待后,编译和安装就完成了,能够重启Nginx。bash
注意session
我使用了比较旧的nginx-upload-module(2.0),若是你使用的是新的2.2,遇到什么问题,请自行解决。