文章内容
默认的 PHP 安装就像在百货商店购买的一套普通西装。它合身,但并不完美。经过调整的 PHP 就像定制的西装,完全符合您的尺寸。但是,需要注意的是,调整 PHP 只是为了提高 PHP 的性能和效率,它无法解决编写不当的代码和响应迟钝的 API 调用问题。
php.ini 文件
PHP 解释器的配置和调优都在 php.ini 文件中,不同的操作系统中该文件的位置不同,一般命令行和 PHP-FPM 的 php.ini 文件是分开的。这里我们假设配置的是 PHP-FPM 的 php.ini 文件,但下文介绍的优化措施适用于所有的 php.ini 文件。
注意:我们应该首先使用 PHP 工具扫描 php.ini 以检查是否正在使用安全最佳实践。
记忆
在运行 PHP 时,需要关注每个 PHP 进程使用了多少内存。php.ini 中的设置用于设置单个 PHP 进程可以使用的最大系统内存量。
该设置的默认值为 128M,这可能适合大多数中小型 PHP 应用程序。但是,如果您正在运行微型 PHP 应用程序,则可以降低该值以节省系统资源。相反,如果您正在运行内存密集型 PHP 应用程序,则可以增加该值。该值的大小由可用的系统内存决定。确定为 PHP 分配多少值是一门艺术。在决定为 PHP 分配多少内存以及您能负担得起多少个 PHP-FPM 进程时,您可以根据以下维度进行判断:
注意:我们应该使用Bench或Siege在与生产环境类似的条件下对PHP应用程序进行压力测试,以确定生产环境是否有足够的可用资源。
Zend
确定要分配多少内存后,就可以配置 PHP 的 Zend 扩展了。有关此扩展的更多信息,请参阅本文:。
PHP 5.5.0+ 已内置此扩展。以下是在 php.ini 文件中用于配置和优化 Zend 扩展的设置:
上传文件
如果你的应用程序允许上传文件,最好设置可以上传的最大文件大小。此外,最好设置可以同时上传的最大文件数:
file_uploads = 1
upload_max_filesize = 10M
max_file_uploads = 3
默认情况下,PHP 允许单次请求最多上传 20 个文件,上传文件最大大小为 2MB。这里我设置了单次请求最多上传 3 个文件,每个文件最大大小为 10MB。这个值不要设置过大,否则会超时。
注意:如果必须上传大文件,Web 服务器配置也必须做相应调整。除了 php.ini 中的设置外,还必须调整 Nginx 虚拟主机配置中的设置。
最长执行时间
php.ini 文件用于设置单个 PHP 进程在终止前可以运行的最大时间。此设置默认为 30 秒,建议将其设置为 5 秒:
max_execution_time = 5
注意:您可以调用 PHP 脚本中的 () 函数来覆盖此设置。
假设我们要生成一份报告,并将结果制作成 PDF 文件。这项任务可能需要 10 分钟才能完成,我们当然不希望 PHP 请求等待 10 分钟。我们应该编写一个单独的 PHP 文件,并让它在单独的后台进程中执行。Web 应用程序只需要几毫秒就可以派生出单独的后台进程,然后返回 HTTP 响应:
exec('echo "create-report.php" | at now');
echo 'report pending...';
-.php 运行在单独的后台进程中,运行完毕后可以更新数据库或者将报告通过邮件发送给收件人。不过这种用法比较少见,更多的时候我们使用异步消费队列来实现类似的功能,在安全性、可扩展性、可维护性等方面都更胜一筹。相关组件包括轻量级消息队列等。
处理会话
PHP 的默认会话处理程序会降低大型应用程序的速度,因为它会将会话数据存储在磁盘上,从而产生不必要的磁盘 I/O 并浪费时间。我们应该将会话数据存储在内存中,例如使用 PHP 或 Redis。这样做还有一个好处,就是将来更容易扩展。如果会话数据存储在磁盘上,则不容易添加其他服务器。如果会话数据存储在 PHP 或 Redis 中,则任何分布式 PHP-FPM 服务器都可以访问会话数据。
如果想要将数据保存在 中,需要进行如下配置:
session.save_handler = 'memcached'
session.save_path = '127.0.0.1:11211'
缓冲输出
如果网络以更少的块发送更多的数据,而不是以更多的块发送较少的数据,那么网络可以更高效,也就是说,以更少的片段向访问者的浏览器传递内容,从而减少 HTTP 请求的总数。
因此我们需要让 PHP 对输出进行缓冲,默认情况下 PHP 已经开启了输出缓冲功能,PHP 会缓冲 4096 字节的输出,然后再将内容发送到 Web 服务器,推荐配置如下:
output_buffering = 4096
implicit_flush = false
注意:如果要更改输出缓冲区大小,请确保使用 4(32 位系统)或 8(64 位系统)的倍数的值。
真实路径缓存
PHP 会缓存应用程序使用的文件路径,这样您就不必在每次包含或导入文件时都搜索包含路径。此缓存称为真实路径缓存。如果您正在运行使用大量文件的大型 PHP 文件(例如组件),则增加 PHP 的真实路径缓存的大小可以提高性能。
真实路径缓存的默认大小是 16K。这个缓存的具体大小不容易确定,但有一个小技巧:首先,将真实路径缓存的大小增加到一个很大的值,比如 256K,然后在 PHP 脚本的末尾添加 (()); 来输出真实路径缓存的真实大小,最后将真实路径缓存的大小改为这个真实值。我们可以在 php.ini 文件中设置真实路径缓存的大小:
realpath_cache_size = 64K
以上就是文章的全部内容了,如果大家想要学习和交流经验,可以加入PHP自学中心,我们一起学习,交流,提高!
让学习成为一种习惯
扫一扫在手机端查看
我们凭借多年的网站建设经验,坚持以“帮助中小企业实现网络营销化”为宗旨,累计为4000多家客户提供品质建站服务,得到了客户的一致好评。如果您有网站建设、网站改版、域名注册、主机空间、手机网站建设、网站备案等方面的需求,请立即点击咨询我们或拨打咨询热线: 13761152229,我们会详细为你一一解答你心中的疑难。