PHP上传下载配置优化

2023-04-18 15:44:08 浏览数 (1)

一、上传下载速度优化

首先明确可道云没有对上传下载做任何限制,速度快慢和网络环境有关。可道云是基于http上传,所以和其他http上传速度基本一致;可以对比其他web系统或网站说附件上传速度。同其他例如webdav、FTP、QQ传输等软件底层协议不一样;传输速度也会不一样。

传输速度受三方面影响:

  1. 本机客户端:网卡、连接方式(有线、无线)、本机磁盘IO负载情况;
  2. 网络环境:网络带宽、wifi还是网线等造成的影响;网络环境复杂、或使用人多时路由器或交换机处理速度也都会是瓶颈之一。
  3. 服务器:受服务器负载、磁盘IO、服务器网络带宽等影响。同时受并发影响;比如20M上行带宽,10个人同时在上传或下载,那么每个人平均就是2M/s

可道云为了能在更多的服务器环境下良好运行,各方面配置是以兼容性为主,可能并不是最优配置。性能调优可以参考配置如下。

主要是由于服务器限制了上传大小,或超时时间太短引起; 推荐如下配置: 推荐环境: centos7 nginx mysql5.6 php7.3 redis;

1. 修改nginx的配置文件
代码语言:javascript复制
client_max_body_size 500M;        
client_header_timeout 3600s;
client_body_timeout 3600s;
fastcgi_connect_timeout 3600s;
fastcgi_send_timeout 3600s;
fastcgi_read_timeout 3600s;
# 其他webserver相应修改类似限制;如apache需要修改LimitRequestBody
# 修改完成重启nginx生效: service nginx reload
2. 修改php配置文件php.ini;
代码语言:javascript复制
post_max_size = 500M;
upload_max_filesize = 500M;
memory_limit = 500M;
max_execution_time = 3600;
max_input_time = 3600;

# php中设置set_time_limit无效(safe_mode=on时php代码中修改超时无效) php.ini
safe_mode = off

# php-fpm.conf 配置优化(超时时间; 4G内存推荐如下子进程配置)
request_terminate_timeout 3600
pm.max_children = 50
pm.start_servers = 10
pm.min_spare_servers = 10
pm.max_spare_servers = 30
pm.max_requests = 500
  • 注意:
    • 如果某一类例如exe文件不能上传,其他文件可上传, 一般是服务器(杀毒软件或防火墙)做了拦截误判,取消相应软件上拦截即可;
    • 超时时间设置; 如果经常有超大文件上传,php和nginx超时时间需要设置大一些;
    • 分片上传: 一个大文件切分成多个分片上传,所有片上传完成后服务器自动合并;一个分片上传失败只需要重传该分片即可;
    • 分片大小设置: 管理员登陆后台--基础设置--上传下载; 调整上传分片大小; 必须小于php.ini和nginx的限制;
    • 修改了php或nginx配置文件后,需要重启php-fpm和nginx;
    • 上传文件限制及超时时间可以根据自己需求设置; 超时时间需大于文件上传下载的时间,否则超时会导致操作失败;
3.修改可道云配置

设置方法:管理员登陆可道云进入后台 系统设置---基础设置---上传/下载

  1. 设置分片大小: 推荐5M

大文件上传时切分成片进行并发上传,从而实现加速和断点续传, 推荐5M; 此值必须小于下述配置;否则会引起上传异常(上传失败,进度回退) php.ini: post_max_size, upload_max_filesize ==> 5M nginx: client_max_body_size ==> 5M;

  1. 上传并发数量; 推荐15个并发;
4.nginx php-fpm上传优化

在nginx.conf中添加如下代码,参考,更多nginx优化

代码语言:javascript复制
#使用共享内存做临时存贮提高上传速度,共享内存需要大一些,否则上传大文件内存不足
client_body_in_file_only clean;
client_body_temp_path /dev/shm 1 2;
fastcgi_param  REQUEST_BODY_FILE  $request_body_file;

二、系统安全优化

1.开启防跨站

系统管理员可以访问服务器任意资源,如果不想这样,可以开启php防跨站,指定某个站点open_basedir,只能访问某个目录。可以有如下几种方式设置:更多请参考

代码语言:javascript复制
# 1)php.ini 中配置
open_basedir = /home/wwwroot/:/tmp/

# 2)nginx中配置 fastcgi.conf
fastcgi_param PHP_VALUE "open_basedir=$document_root:/tmp/";

# 3)apache 的 httpd.conf 中Directory配置
"php_admin_value open_basedir none" #关闭 
php_admin_value open_basedir "/home/wwwroot/:/tmp/:/var/tmp/:/proc/"

# 4).user.ini 站点根目录
open_basedir = /home/wwwroot/:/tmp/
2.开启登陆验证码

设置方法:管理员登陆可道云:右上角菜单——系统设置——安全设置——开启登陆验证码

3. 其他服务器运维优化
  • 建议全站使用https,避免传输中数据被窃听。
  • 设置服务器防火墙,关闭无关端口
  • 关注安全相关新闻,保持服务器相关软件为最新版本。

三、其他优化

1.静态资源配置到CDN

对于访问量比较大的站点,可以将可道云的静态资源迁移到CDN。步骤如下:

  1. 先将kod下面的static上传到相应cdn,获得对应访问static目录的域名,例如: http://cdn.test.com/static/
  2. 配置setting_user.php 配置cdn地址: 在config/下新建 setting_user.php文件;粘贴如下内容;(已存在则不需要新建) <?php $GLOBALS['config']['settings']['staticPath'] = "http://cdn.test.com/static/";

0 人点赞