影响PHP脚本执行时间的因素有哪些?

1.影响PHP脚本执行时间的因素有哪些?

①:php.ini 中 max_execution_time 最大执行时间,默认为:30s ,(cli模式下不限制)
set_time_limit()函数和配置指令max_execution_time只影响脚本本身执行的时间。任何发生在诸如使用system()的系统调用,流操作,数据库操作等的脚本执行的最大时间不包括其中,当该脚本已运行。

②:php-fpm.conf 中的request_terminate_timeout 设置单个请求的超时中止时间。
设置单个请求的超时中止时间。该选项可能会对 php.ini 设置中的 max_execution_time 因为某些特殊原因没有中止运行的脚本有用。设置为 ‘0’ 表示 ‘Off’。可用单位:s(秒),m(分),h(小时)或者 d(天)。默认单位:s(秒)。默认值:0(关闭)。

显然如果是CGI方式,则request_terminate_timeout的优先级会高于max_execution_time。当max_execution_time由于某种原因无法终止脚本的时候,会把这个php-fpm请求干掉。

③:set_time_limit 和 ini_set(“max_execution_time”, “120”);

2.影响PHP上传文件的因素有哪些?
①:file_uploads = On 必须设置为On 开启文件上传
②:upload_tmp_dir 如果设置了上传的临时目录,则该目录必须是运行php-fpm用户可写的目录
③:upload_max_filesize = 50M 设置允许上传文件的最大值
④:post_max_size = 50M
这个变量也是一个同表单提交相关的变量,它限制的是客户端通过POST方法进行一次表单提交时PHP程序所能够接收的最大数据量。一般情况下,将此值的值设置的比 upload_max_filesize 略大即可,比如要上传20MB的文件,此值可以设置为 21MB。
⑤:max_file_uploads = 20 单个请求时,允许上传的最大文件数 ;
⑥:max_input_time = 120
此变量可以以秒为单位对通过POST、GET以及PUT方式接收数据时间进行限制。如果应用程序所运行环境处在低速链路上,则需要增加此值以适应接收数据所需的更多时间。【文中开头遇到的问题就是通过增大这个值解决】

3.影响nginx与php-fpm交互的时间配置有哪些?(一般在nginx/conf/nginx.conf中配置)
#连接到后端fastcgi超时时间
fastcgi_connect_timeout=300;

#向fastcgi请求超时时间(这个指定值已经完成两次握手后向fastcgi传送请求的超时时间)
fastcgi_send_timeout=300;

#接收fastcgi应答超时时间,同理也是2次握手后
fastcgi_rend_timeout=300;

如果使用了Nginx的代理,可以在块里加上:
proxy_connect_timeout 300s;
proxy_send_timeout 300s;
proxy_read_timeout 300s;

#用于设置客户端连接保持活动的超时时间,在超过这个时间之后服务器会关闭该链接。
keepalive_timeout 120;

#用于设置客户端请求读取超时时间,如果超过这个时间,客户端没有发送任何数据,nginx将返回“request time out (408)”错误。
client_header_timeout 3m;

#用于设置客户端请求主体读取超时时间,默认值为60.如果超过这个时间,客户端还没有发送任何数据,nginx将返回“Request time out(408)”。
client_body_timeout 3m;

#服务器超时设置
send_timeout 3m;

4.影响nginx接收文件的因素有哪些?(一般在nginx/conf/nginx.conf中配置)

fastcgi_buffer_size=64k;
#读取fastcgi应答第一部分需要多大缓冲区,该值表示使用1个64kb的缓冲区读取应答第一部分(应答头),可以设置为fastcgi_buffers选项缓冲区大小。

fastcgi_buffers 4 64k;
#指定本地需要多少和多大的缓冲区来缓冲fastcgi应答请求,假设一个php或java脚本所产生页面大小为256kb,那么会为其分配4个64kb的缓冲来缓存;若页面大于256kb,那么大于的256kb的部分会缓存到fastcgi_temp指定路径中,这并非是个好办法,内存数据处理快于硬盘,一般该值应该为站点中php/java脚本所产生页面大小中间值,如果站点大部分脚本所产生的页面大小为256kb,那么可把值设置为16 16k,4 64k等。

fastcgi_busy_buffers_size 128k;
#默认值是fastcgi_buffer的2倍

fastcgi_temp_file_write_size 128k;
#写入缓存文件使用多大的数据块,默认值是fastcgi_buffer的2倍。

server_names_hash_bucket_size 128;
#服务器名字的hash表大小
client_header_buffer_size 32k;
#用于指定来自客户端请求头headerbuffer大小,对于大多数请求,1KB的缓冲区大小已经足够,如果自定义了消息头或有更大的cookie,可以增加缓冲区大小。这里设置为32KB

large_client_header_buffers 4 128k;
#用来指定客户端请求中较大的消息头的缓存最大数量和大小,“4”为个数,“128”为大小,最大缓存为4个128KB。

client_max_body_size 50m;
#允许客户端请求的最大单文件字节数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值