您的位置:首页 > 编程语言 > PHP开发

PHP主要配置优化

2016-06-14 15:24 477 查看

内存配置

运行php时最关心的是每个PHP进程要使用多少内存。默认的memory_limit是128M,这个根据具体的项目可以调整;

1. 一共能分配给PHP多少内存?

首先,我会确认分配给PHP的内存是多少,这个内存是和其他应用并存的,不如mysql,nginx,mysql,这些也需要消耗内存。所以512M给PHP 就足够了。

2.测试单个PHP进程平均消耗多少内存?

通过测试单个PHP 消耗的内存大小,取其平均值作为内存的大小,通常上传文件,图像处理等相关逻辑对内存的消耗比较大。

3. 能负担得起多少个PHP-FPM进程?

假如给PHP分配了512MB内存,每个php进程消耗15MB内存,最多能负担得起34个PHP-FPM进程,具体的值根据实际的测试来设定。

Zend Opcache

zend opcache用来缓存操作码,php简单执行流程如下:

php5.5+中内置了zend Opecahe:

opcache.enable=1
opcache.enable_cli=1
opcache.memory_consumption=64  //为操作缓存分配的内存(MB),分配的内存应该保持PHP所有的操作码
opcache.interned_strings_buffer=4 //用来储存驻留字符串的内存量,驻留字符串是什么了?php解释器会找到相同字符串的多个实例,把这些字符串留在内存中,如果再次使用相同的字符串,php解释器会使用指针,这么做能节省内存,默认是设置为4MB
opcache.max_accelerated_files=2000  //操作码缓存中最多能存储多少个PHP脚本。范围是在200-100000之间的任何数,这个值一般比对应的PHP文件要多。
opcache.max_wasted_percentage=5 //浪费内存的上限,以百分比计。 如果达到此上限,那么 OPcache 将产生重新启动续发事件。
opcache.use_cwd=1  //如果启用,OPcache 将在哈希表的脚本键之后附加改脚本的工作目录, 以避免同名脚本冲突的问题。 禁用此选项可以提高性能,但是可能会导致应用崩溃
opcache.validate_timestamps=1  //如果启用,那么 OPcache 会每隔 opcache.revalidate_freq 设定的秒数 检查脚本是否更新。 如果禁用此选项,你必须使用 opcache_reset() 或者 opcache_invalidate() 函数来手动重置 OPcache,也可以 通过重启 Web 服务器来使文件系统更改生效。生产环境中设置为0
opcache.revalidate_freq=2 //检查脚本时间戳是否有更新的周期,以秒为单位。 设置为 0 会导致针对每个请求, OPcache 都会检查脚本更新。如果 opcache.validate_timestamps 配置指令设置为禁用,那么此设置项将会被忽略。
opcache.revalidate_path=1  //如果禁用此选项,在同一个 include_path 已存在的缓存文件会被重用。 因此,将无法找到不在包含路径下的同名文件。
opcache.save_comments=1 //如果禁用,脚本文件中的注释内容将不会被包含到操作码缓存文件, 这样可以有效减小优化后的文件体积。 禁用此配置指令可能会导致一些依赖注释或注解的 应用或框架无法正常工作, 比如: Doctrine, Zend Framework 2 以及 PHPUnit。
opcache.load_comments=1  //如果禁用,则即使文件中包含注释,也不会加载这些注释内容。 本选项可以和 opcache.save_comments 一起使用,以实现按需加载注释内容。
opcache.enable_file_override=1 //如果启用,则在调用函数 file_exists(), is_file() 以及 is_readable() 的时候, 都会检查操作码缓存,无论文件是否已经被缓存。 如果应用中包含检查 PHP 脚本存在性和可读性的功能,这样可以提升性能。 但是如果禁用了 opcache.validate_timestamps 选项, 可能存在返回过时数据的风险。


文件上传

如果应用中没有相关的文件上传,为了增强安全性则禁止文件上传,如果有文件上传则设置能上传的文件的大小,一次性能上传的文件的个数

file_uploads = On // 开启文件上传  如果想禁止 则将On改为Off
upload_max_filesize = 2M  //上传文件的大小
max_file_uploads = 3   //一次性最多上传文件的数量


最长执行时间

可以通过配置文件中max_execution_time设置单个php进程最长的运行时间。这个设置的默认值是30秒,一般的程序运行时间没这么长,最好设置在10秒以内。

max_execution_time =10  //该配置也可以通过set_time_limit()函数动态设置


处理会话

php默认的会话处理会拖慢大型应用,因为默认的处理将会话存储在硬盘上,会增加不必要的文件I/O。我们可以将会话保存在内存中,redis或者memcached,这样做可以方便以后扩展,下面将session保存在redis中:

session.save_handler = redis
session.save_path = “tcp://127.0.0.1:6379″


如果不想修改php.ini可这样

ni_set(“session.save_handler”,”redis”);
ini_set(“session.save_path”,”tcp://127.0.0.1:6379″);


缓冲输出

如果在较少的块中发送更多的内容,而不是在较多的块中发送较少的数据,这样网络的效率最高,这样做事为了减少http请求数。

因此,要让php缓冲输出。默认情况下,php已经启用了输出缓冲功能;

output_buffering =4098  //缓冲区的大小
implicit_flush=true   // 输出控制


真实路径缓存

php会缓存应用中使用的文件路径,这样每次导入或者包含的时候无需再次搜索文件路径了。这种缓存叫真实路径缓存,如果允许的是大型的php项目,可以使用php真实路径缓存能得到更好的性能。真实性缓存的默认大小为16K。可以在php配置文件中进行配置。

realpath_cache_size = 64k
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  php