用于生产环境中的PHP需要对其进行优化,可以让PHP自身发挥更好的性能,除了写好PHP代码,还要配置好php.ini。本文从内存、文件上传、会话缓冲输出、真实路径缓存这几个方面讲解php.ini的配置调优。
1、内存

默认设置

memory_limit = 128M

单个进程可使用的内存最大值,这个值的设定可以从以下几点考虑:

  • 应用的类型。如果是内存集中型应用,可增加该值;

  • 单个 PHP 进程平均消耗的内存,该值可通过多次运行同一个脚本来计算平均值;

  • 能负担多少个 php-fpm 进程;该值等于分配的总内存除以单个 PHP 进程平均消耗的内存

2、文件上传

默认设置

file_uploads = Onmax_file_uploads = 20upload_max_filesize = 2Mmax_execution_time = 30 值 为 0 代表没有限制
  • 设置max_file_uploads来决定同时允许多少个文件上传;

  • 设置upload_max_filesize来决定每个文件上传的最大值;

  • 如果是长时间任务,尽量使用队列来处理,因此,可适当缩短max_execution_time的值;

注意: Web 服务器也可以设置文件上传大小及超时时间,不能仅仅以 php.ini 的设置为准;

3、会话

PHP 的会话默认是保存在硬盘中

session.save_handler = files

在实际应用中,应当将会话保存在内存中。可使用 Memcached 或者 Redis。这样做主要有两个好处:

  • 提高速度;

  • 有助于后期的扩展,如果会话数据存储在硬盘中,不便于增加额外的服务器,如果把会话数据存放在 Memcached 或 Redis 里,任何一台分布式 PHP-FPM 服务器都能访问会话数据。

可通过 PECL 安装memcached扩展并设置默认的save_handler为memcached

session.save_handler = 'memcached'session.save_path = '127.0.0.1:11211'

4、缓冲输出

默认值

output_buffering = 4096

在较少的片段中把内容传递给访问者的浏览器,能减少 HTTP 请求总数。因此,我们要让 PHP 缓冲输出,默认情况下,PHP 已经启用了输出缓冲功能,PHP 缓冲 4096 字节的输出之后才会把内容发送给 Web 服务器。

注:如果想要修改输出缓冲区的大小,确保使用的值是 4(32 位系统)或 8(64 位系统)的倍数。

5、真实路径缓存

默认值

realpath_cache_size = 4Mrealpath_cache_ttl = 120

PHP 会缓存应用使用的文件路径,这样每次包含或导入文件时就无需不断搜索包含路径了,这个缓存叫真实路径缓存(realpath cache),如果运行的是大型的 PHP 文件(如 Composer 组件),使用了大量文件,增加 PHP 真实路径缓存的大小能得到更好的性能。

最新文章

  1. MongoDB在Windows下安装、Shell客户端的使用、Bson扩充的数据类型、MongoVUE可视化工具安装和简单使用、Robomongo可视化工具(2)
  2. ASP.NET MVC 在控制器中接收视图表单POST过来的数据方法
  3. 不同浏览器对parseInt方法解析的不同
  4. 深入理解linux网络技术内幕读书笔记(十)--帧的接收
  5. [Mugeda HTML5技术教程之14]案例分析:制作网页游戏
  6. How To Add Swap on Ubuntu 14.04
  7. c++类的基础
  8. Java Web项目中解决中文乱码方法总结
  9. 微信小程序开发和h5的区别
  10. A1120. Friend Numbers
  11. qlikview 权限管理和sso集成
  12. mysql中trim()函数的用法
  13. Vue2 第二天学习
  14. 转 configure: error: *** libmcrypt was not found解决方案
  15. class A where T:new()是什么意思
  16. 无限级分类 mysql设计
  17. 5月24日上课笔记-js操作DOM
  18. 在TFS 2013的迭代视图中修改工作项数目限制
  19. C#方法重载和方法重写的区别
  20. Java中的集合框架-Collections和Arrays

热门文章

  1. JSONObject和JSONArray的区别
  2. java hibernate +mysql demo
  3. 区分CommonJs/ES6 Module/AMD/CMD
  4. Ubuntu PostgreSQL数据库忘记密码
  5. C语言中return和exit的区别
  6. k8s资源清单
  7. 本地Map缓存
  8. PaddleOCR(PaddleHub Serving)离线部署包制作
  9. 小程序toast组件中事件触发条件
  10. C/C++ FILE 和 fstream 用法详解