当前位置:首页 > 文章列表 > 文章 > php教程 > 提高 PHP 效率:经过验证的性能优化技术

提高 PHP 效率:经过验证的性能优化技术

来源:dev.to 2024-09-21 10:03:59 0浏览 收藏
推广推荐
免费电影APP ➜
支持 PC / 移动端,安全直达

一分耕耘,一分收获!既然打开了这篇文章《提高 PHP 效率:经过验证的性能优化技术》,就坚持看下去吧!文中内容包含等等知识点...希望你能在阅读本文后,能真真实实学到知识或者帮你解决心中的疑惑,也欢迎大佬或者新人朋友们多留言评论,多给建议!谢谢!

提高 PHP 效率:经过验证的性能优化技术

优化 php 性能可确保我们的 web 应用程序平稳运行、快速响应并高效处理流量。下面是关于如何有效地最大化 php 性能的详细分步指南,并为每种优化策略提供了实践示例。


第 1 部分:更新到最新的稳定 php 版本

第 1 步:检查当前 php 版本

首先检查系统上安装的当前 php 版本:

php -v

如果您的版本已过时,升级到最新的稳定 php 版本通常会带来性能改进和新功能。

第 2 步:升级 php(如果需要)

要安装最新的 php 版本,请在 ubuntu 上运行以下命令:

sudo apt update
sudo apt install software-properties-common
sudo add-apt-repository ppa:ondrej/php
sudo apt install php8.2 # replace with the latest version

为什么?

每个新的 php 版本都会带来性能提升。例如,与 php 5.x 相比,php 7.x 的执行时间提高了近 50%,而 php 8.x 也有进一步显着的改进。


第 2 部分:使用操作码缓存 (php opcache)

第 1 步:在 php 中启用 opcache

opcache 将预编译的脚本字节码存储在内存中,减少了 php 在每个请求上加载和解析脚本的需要。要启用它:

  1. 打开你的 php.ini 文件:
   sudo nano /etc/php/8.2/fpm/php.ini # use your php version
  1. 找到 opcache 设置并启用它:
   opcache.enable=1
   opcache.memory_consumption=128
   opcache.max_accelerated_files=10000
   opcache.revalidate_freq=0
  1. 重新启动 php-fpm 和 nginx:
   sudo systemctl restart php8.2-fpm
   sudo systemctl restart nginx

为什么?

opcache 无需在每个请求上编译 php 代码,从而显着降低 cpu 使用率和请求时间,从而显着提高性能。


第 3 部分:优化数据库查询

第 1 步:为数据库表建立索引

不正确的数据库索引会减慢查询执行速度。确保对 where 子句中使用的列或用于排序的列建立索引。

mysql 查询示例:

create index idx_user_email on users(email);

第 2 步:使用查询分析

分析您的数据库查询以查找瓶颈。例如,laravel 的 eloquent orm 允许查询分析:

db::enablequerylog();
$users = db::table('users')->get();
dd(db::getquerylog());

为什么?

通过优化数据库查询并对关键列建立索引,您可以大大减少查询执行时间,从而加快 php 应用程序的速度。


第 4 部分:启用 gzip 压缩

第 1 步:在 nginx 中启用 gzip

gzip 减少了从服务器发送到客户端的数据大小,使页面加载速度更快。要在 nginx 中启用它:

  1. 打开 nginx 配置文件:
   sudo nano /etc/nginx/nginx.conf
  1. 添加以下 gzip 设置:
   gzip on;
   gzip_comp_level 2;
   gzip_types text/css application/javascript application/json image/svg+xml;
   gzip_min_length 256;
  1. 保存并重启nginx:
   sudo systemctl restart nginx

为什么?

启用 gzip 压缩可减少需要传输的数据量,从而加快页面加载时间并减少带宽使用。


第 5 部分:使用内容交付网络 (cdn)

步骤 1:为静态资产配置 cdn

cloudflare 或 amazon cloudfront 等 cdn 在全球分布式服务器上存储 css、javascript 和图像等静态资产的副本,使它们更接近用户。

示例:

<link rel="stylesheet" href="https://cdn.example.com/style.css">

为什么?

通过将静态内容卸载到 cdn,您可以减少服务器上的负载,并显着缩短全球用户的响应时间。


第 6 部分:使用 php-fpm 和调优

第1步:安装并配置php-fpm

确保您使用的是 php-fpm(fastcgi process manager),它针对高负载环境进行了更好的优化:

sudo apt install php8.2-fpm

第 2 步:调整 php-fpm 设置

您可以通过调整 php-fpm 池配置文件中的 pm.max_children、pm.start_servers、pm.min_spare_servers 和 pm.max_spare_servers 设置来调整 php-fpm 设置,以有效地处理更多请求。

编辑池配置文件:

sudo nano /etc/php/8.2/fpm/pool.d/www.conf

根据可用内存和流量增加 pm.max_children:

pm.max_children = 50
pm.start_servers = 10
pm.min_spare_servers = 5
pm.max_spare_servers = 20

重新启动 php-fpm 和 nginx:

sudo systemctl restart php8.2-fpm
sudo systemctl restart nginx

为什么?

php-fpm 允许您的 php 进程高效处理更多并发请求,减少重负载下的服务器响应时间。


第 7 部分:缩小和捆绑资产

第 1 步:缩小 css、javascript 和 html

通过删除不必要的空格和注释来缩小 css、javascript 和 html 文件,从而减少文件大小。

使用 laravel mixgulp:
等工具

npm install laravel-mix --save-dev

laravel 的示例 webpack.mix.js 文件:

const mix = require('laravel-mix');

mix.js('resources/js/app.js', 'public/js')
    .sass('resources/sass/app.scss', 'public/css')
    .minify('public/js/app.js')
    .minify('public/css/app.css');

第 2 步:启用浏览器缓存

在 nginx 配置文件中,添加静态资源的缓存:

location ~* \.(css|js|jpg|jpeg|png|gif|ico|woff|woff2)$ {
    expires 1y;
    access_log off;
    add_header cache-control "public";
}

为什么?

缩小和捆绑资源,并启用浏览器缓存,可以减小文件的大小并减少加载时间,从而提高应用程序的速度。


第 8 部分:使用 redis 或 memcached 进行缓存

第1步:安装redis

安装 redis:

sudo apt install redis-server

第 2 步:配置 laravel 以使用 redis

在 laravel 中,打开 .env 文件并将 redis 配置为缓存驱动程序:

cache_driver=redis

第 3 步:缓存数据库查询

使用查询缓存来加速重复的数据库查询:

$users = cache::remember('users', 60, function() {
    return db::table('users')->get();
});

为什么?

通过缓存数据库查询,您可以减少数据库负载并显着缩短频繁访问数据的响应时间。


第 9 部分:优化自动加载器

第 1 步:使用 composer 的 autoloader 优化

优化 composer 自动加载器以进行生产:

composer install --optimize-autoloader --no-dev

第 2 步:清除未使用的服务提供商

在 laravel 中,禁用 config/app.php 中任何未使用的服务提供程序,以减少内存使用并加快应用程序启动时间。

为什么?

自动加载优化编译类映射,使类加载更快。禁用未使用的服务有助于应用程序使用更少的资源。


第 10 部分:监控和分析

第 1 步:使用 laravel telescope(或其他分析工具)

安装 laravel telescope 来分析您的应用程序:

composer require laravel/telescope
php artisan telescope:install
php artisan migrate
php artisan serve

第 2 步:使用 new relic 或 blackfire 进行高级分析

您可以集成new relicblackfire等第三方工具来分析应用程序瓶颈、数据库性能等。

为什么?

监控和分析工具可帮助识别 php 应用程序中的缓慢查询、内存泄漏和瓶颈,使您能够主动修复性能问题。


结论:

通过执行这些步骤,您可以显着提高 php 应用程序的性能。从更新 php 和启用操作码缓存到优化数据库查询和配置 php-fpm,每一步都有助于提高应用程序的响应速度和可扩展性。

今天带大家了解了的相关知识,希望对你有所帮助;关于文章的技术知识我们会一点点深入介绍,欢迎大家关注golang学习网公众号,一起学习编程~

版本声明
本文转载于:dev.to 如有侵犯,请联系study_golang@163.com删除
Win10怎么隐藏OneDrive Win10隐藏OneDrive方法Win10怎么隐藏OneDrive Win10隐藏OneDrive方法
上一篇
Win10怎么隐藏OneDrive Win10隐藏OneDrive方法
PHP 函数单元测试中的性能基准测试
下一篇
PHP 函数单元测试中的性能基准测试
查看更多
最新文章
查看更多
课程推荐
  • 前端进阶之JavaScript设计模式
    前端进阶之JavaScript设计模式
    设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
    543次学习
  • GO语言核心编程课程
    GO语言核心编程课程
    本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
    516次学习
  • 简单聊聊mysql8与网络通信
    简单聊聊mysql8与网络通信
    如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
    500次学习
  • JavaScript正则表达式基础与实战
    JavaScript正则表达式基础与实战
    在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
    487次学习
  • 从零制作响应式网站—Grid布局
    从零制作响应式网站—Grid布局
    本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
    485次学习
查看更多
AI推荐
  • ChatExcel酷表:告别Excel难题,北大团队AI助手助您轻松处理数据
    ChatExcel酷表
    ChatExcel酷表是由北京大学团队打造的Excel聊天机器人,用自然语言操控表格,简化数据处理,告别繁琐操作,提升工作效率!适用于学生、上班族及政府人员。
    3213次使用
  • Any绘本:开源免费AI绘本创作工具深度解析
    Any绘本
    探索Any绘本(anypicturebook.com/zh),一款开源免费的AI绘本创作工具,基于Google Gemini与Flux AI模型,让您轻松创作个性化绘本。适用于家庭、教育、创作等多种场景,零门槛,高自由度,技术透明,本地可控。
    3428次使用
  • 可赞AI:AI驱动办公可视化智能工具,一键高效生成文档图表脑图
    可赞AI
    可赞AI,AI驱动的办公可视化智能工具,助您轻松实现文本与可视化元素高效转化。无论是智能文档生成、多格式文本解析,还是一键生成专业图表、脑图、知识卡片,可赞AI都能让信息处理更清晰高效。覆盖数据汇报、会议纪要、内容营销等全场景,大幅提升办公效率,降低专业门槛,是您提升工作效率的得力助手。
    3457次使用
  • 星月写作:AI网文创作神器,助力爆款小说速成
    星月写作
    星月写作是国内首款聚焦中文网络小说创作的AI辅助工具,解决网文作者从构思到变现的全流程痛点。AI扫榜、专属模板、全链路适配,助力新人快速上手,资深作者效率倍增。
    4566次使用
  • MagicLight.ai:叙事驱动AI动画视频创作平台 | 高效生成专业级故事动画
    MagicLight
    MagicLight.ai是全球首款叙事驱动型AI动画视频创作平台,专注于解决从故事想法到完整动画的全流程痛点。它通过自研AI模型,保障角色、风格、场景高度一致性,让零动画经验者也能高效产出专业级叙事内容。广泛适用于独立创作者、动画工作室、教育机构及企业营销,助您轻松实现创意落地与商业化。
    3833次使用
微信登录更方便
  • 密码登录
  • 注册账号
登录即同意 用户协议隐私政策
返回登录
  • 重置密码