84669 人学习
152542 人学习
20005 人学习
5487 人学习
7821 人学习
359900 人学习
3350 人学习
180660 人学习
48569 人学习
18603 人学习
40936 人学习
1549 人学习
1183 人学习
32909 人学习
1、上传文件平均大小10M左右2、目前暂时用的apache,听说换nginx能加快速度?
欢迎选择我的课程,让我们一起见证您的进步~~
在文件上传过程中PHP-FPM并不会被阻塞,因为Nginx接收完上传的内容后才一次性交给PHP-FPM.Nginx和PHP-FPM的工作进程各自只开1个.以2KB每秒上传图片:
time trickle -s -u 2 curl \ -F "action=info.php" \ -F "upload_file=@linux.jpeg;type=image/jpeg" \ -F "submit=提交" \ http://www.example.com/app/info.php sudo netstat -antp|egrep "curl|nginx|fpm"
发现只有nginx和curl处于ESTABLISHED状态,nginx和fpm都没有被阻塞.
top -p 4075 可见Nginx单线程. sudo strace -p 4075 可见Nginx调用recvfrom接收数据并且pwrite保存数据. sudo strace -p 13751 可见PHP-FPM是在Nginx接收完成用户上传的数据时才获取数据.
上传慢主要还是带宽问题,可能是用户带宽,也可能是服务器带宽不够.
上传文件跟你本地的网络带宽有关吧
换上传带宽快的网络,跟PHP和Nginx没关系。
nginx 有个文件上传的 module https://github.com/vkholodkov/nginx-upload-module/tree/2.2,利用这个模块,文件上传接收处理就直接交给nginx,nginx 直接把文件的相关参数传给php,这样php只接收文件相关参数,如文件大小、临时保存位置、类型等,不需处理提交过来的文件流
nginx
module
php
在文件上传过程中PHP-FPM并不会被阻塞,因为Nginx接收完上传的内容后才一次性交给PHP-FPM.
Nginx和PHP-FPM的工作进程各自只开1个.
以2KB每秒上传图片:
发现只有nginx和curl处于ESTABLISHED状态,nginx和fpm都没有被阻塞.
上传慢主要还是带宽问题,可能是用户带宽,也可能是服务器带宽不够.
上传文件跟你本地的网络带宽有关吧
换上传带宽快的网络,跟PHP和Nginx没关系。
nginx
有个文件上传的module
https://github.com/vkholodkov/nginx-upload-module/tree/2.2,利用这个模块,文件上传接收处理就直接交给nginx
,nginx
直接把文件的相关参数传给php
,这样php
只接收文件相关参数,如文件大小、临时保存位置、类型等,不需处理提交过来的文件流