PHP性能优化

2023-11-06

PHP性能优化首先分为三个方向
PHP语言级别的性能优化->PHP周边问题的性能优化->PHP自身优化

一.PHP语言级别的性能优化
1.多使用PHP 的内置函数
2.少使用错误抑制符@
会产生额外的opcode开销 (opcode:当解释器完成对脚本代码的分析后,便将它们生成可以直接运行的中间代码,也称为操作码(Operate Code,opcode) )
错误抑制符的原理 是在@抑制符之前增加error reporting设置忽略 在之后设置回复
3.正确的使用正则表达式
正则表达式的回溯开销 如果不是高手 那么就老老实实使用字符串函数吧。
4.利用unset及时释放不用的内存
5.避免在循环内做运算
6.减少计算密集型业务
比如大批量的数据分析场景,毕竟php的运算 处理流程 需要转换成C语言
php更适合做衔接Webserver与后端服务(作为一个纽带使用),UI呈现
7.务必使用带引号字符串做键值(会浪费去常亮查找的操作)

二.PHP周边问题
周边有包括
硬件:linux 运行环境 硬盘(文件存储) 网络 内存
软件:数据库, 缓存(memeche,redis)–属于内存范畴
他们的性能都会影响项目性能

优化:
1.减少文件类操作
常见php场景的开销次序:
读写内存 << 读写数据库 < 读写磁盘 < 读写网络数据

2.优化网络请求
1) 设置超时时间:a>连接超时:200ms,b>读超时:800ms,c>写超时:500ms。
2.)串行请求并行化,curl_multi_*(), swoole扩展。

3.压缩PHP接口输出:
使用Gzip压缩
利:有利于client端更快接收数据;
弊:额外的cpu开销
Gzip 压缩接口输出. 当数据>100k,效果会好。
Swoole 扩展,实现并行。

4.合理利用缓存
当多次请求 内容不变的时候 使用缓存(通常使用在模板缓解里)

5.时间窗口复用思想 同思想 旁路方案
串行改成并行(任务与任务之间不强制依赖,后一个任务不强依赖前一个任务时才可以)

三.PHP性能优化工具
XHPorf : facebook的PHP性能分析工具 可以定位项目中耗时较高的函数
apache自带的ab做压力测试
vld 做opcode代码分析

四.性能瓶颈
Opcode cache:对Opcode做缓存 ->PHP扩展APC
扩展实现:通过PHP扩展代替代码中的高频率逻辑
Runtime优化:HHVM

php扩展站点pecl.php.net

文章总结于
慕课网
性能优化之PHP优化

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PHP性能优化 的相关文章

  • 显式删除会话cookie会产生什么影响?

    我使用 php session 来维护用户的会话 Session 在登录后创建 在注销或超时后销毁 我需要管理面板中的一个选项来强制注销任何用户 如果他在网站上处于活动状态 我怎样才能做到这一点 我正在考虑删除临时会话文件 这应该有效地破坏
  • 如何在 Carbon Laravel 中添加日期和另一个日期?

    在我的 laravel 项目中 我想将日期时间增加到前一个日期时间 这是我的代码 expire order 0 gt expire date new Carbon now gt addMonths 6 这两行的结果是 2018 01 28
  • 如何使用配置文件 (.ebextensions) 在 AWS Elastic Beanstalk 上安装 PHP IMAP 扩展?

    有谁知道如何使用配置文件 ebextensions 在 AWS Elastic Beanstalk 上安装和启用 PHP IMAP 扩展 我使用的是 64 位 Amazon Linux 2017 03 v2 4 0 运行 PHP 7 0 1
  • 如何更改codeception phpbrowser/mink超时

    我正在尝试使用代码接收创建测试 以检查页面在高负载的情况下是否正常工作 不幸的是 如果页面负载非常高并且测试开始 我会收到这样的错误 Codeception Exception ModuleConfig Codeception Util M
  • 垃圾邮件打败了我所有的验证码

    我有一个 WordPress 博客 我在上面使用验证码插件的时间最长 因为它有效 最近我收到了大量的垃圾邮件 然后我尝试执行通过 PHP 生成的 将这些随机数添加在一起 但仍然没有成功 我不太确定需要做什么来阻止这些垃圾邮件 但这很烦人 我
  • MySQL 和 PHP 参数 1 作为资源

    好吧 当我运行下面提到的代码时 PHP 向我抛出此错误 在日志中 Error mysql num rows 期望参数 1 为资源 第 10 行 place 中给出的字符串 9 11号线 queryFP SELECT FROM db coun
  • 如何仅删除页面的自动段落格式,而不删除帖子的自动段落格式(WordPress)

    我已经熟悉这个在 WordPress 中删除自动段落格式的小技巧 remove filter the content wpautop remove filter the excerpt wpautop 但是添加这个函数 php删除整个网站的
  • 如何在 CakePHP 中“验证”人名?

    我有一个 PHP 脚本 应该检查 有效 的人名 但最近破解了带有空格的名称 因此我们向验证器添加了空格 除了这样做之外 有没有办法向 CakePHP 的验证器添加黑名单以阻止所有 无效 字符 而不是允许 有效 字符 注意 我 通常 知道如何
  • 使用 phpdocx 下载损坏的 .docx

    我有一个项目 我们使用 phpdocx pro 在模板中生成 docx 文件 我可以很容易地将数据输入到模板中 但是当下载文件并在 MS Word 2010 中打开时 程序报告无法打开文件 因为内容存在问题 详细信息是 文件已损坏 并且无法
  • 这个巨大的正则表达式是如何工作的?

    我最近在我的一个目录中的一个名为的文件中找到了下面的代码doc php 文件功能或链接到文件管理器 做得非常好 基本上 它列出了当前目录中的所有文件 并且允许您更改目录 它可以访问我的所有文件 添加 重命名 信息 删除 我不记得安装过它 我
  • 自定义帖子类型的 WordPress 自定义字段

    过去有几个人出现过这个问题 但他们的问题的解决方案对我来说不起作用 我已经尝试了很多 在 WordPress 中 我创建了 3 种自定义帖子类型 1 代表 视频 新闻 和 音乐 每个内容都发布到自己的页面 我想添加自定义字段 这样我就可以为
  • 如何在CentOS 5.3上安装php-mongodb?

    我已经在我的 VPS 上安装了 mongoDB 效果很好 现在我想安装 php 驱动程序以使 php 与 mongoDB 一起工作 我跟着蒙戈安装 http www php net manual en mongo installation
  • 如何在php中使用一张图像绘制形状

    我需要使用图像的一部分来创建帧图像 例如 用户将从后端上传图像片段 现在我需要根据前端用户的要求在前端创建一个框架 用户将选择框架的高度和宽度 然后他将选择该图像片段 如下所示 我没有办法做到这一点 我尝试通过 css 和 html can
  • 如何使用 jQuery Ajax 将 PHP 数组值传递到另一个文件?

    这是我的代码
  • 如何在同一 PHP 页面上多次使用 mysqli fetch_assoc() 和准备好的语句?

    有没有办法启用fetch assoc 在同一页上多次使用准备好的语句 data conn gt prepare SELECT FROM some table WHERE id data gt bind param i id data gt
  • 使用 :hover 作为元素的内联样式(使用 HTML/CSS/php)[重复]

    这个问题在这里已经有答案了 可能的重复 如何将 a hover 规则嵌入到文档中间的样式属性中 https stackoverflow com questions 131653 how do i embed an ahover rule i
  • php oracle客户端oci8安装出现什么问题

    我尝试了安装 PHP Oracle 客户端的所有过程 1 我安装了客户端版本8和32位 2 我在php ini中取消了oci的注释 3 重新启动Wamp 4 不确定是否真的安装 但我在 php ini 中得到了引用 5 但仍然无法连接 泰汉
  • php如何生成动态list()?

    根据我的理解 这就是 list 的工作原理 list A1 A2 A3 array B1 B2 B3 所以在帮助下list 我们可以相应地从数组中分配值 这是我的问题 如何生成动态list 1 基于数据库返回结果 我不确定有多少 但我将其全
  • 在 PHP 中接受带有小数点和千位分隔符的国际数字

    对于用户可以输入能量值来计算相应费用的在线计算器 我需要 PHP 脚本来接受各种用户输入 200 万又四分之一焦耳 的值可以输入为 2000000 25 默认表示法 2 000 000 25 带千位分隔符 2000000 25 逗号作为小数
  • 禁用 WooCommerce 手动/编辑订单的电子邮件通知

    需要 WooCommerce 专业知识 我需要禁用手动创建的订单的电子邮件通知 我必须使用处理状态 由于处理订单状态的自定义挂钩 我无法创建自定义状态 理想情况下 手动订单页面中可以勾选一个复选框 勾选后 它将禁止在每种状态下向客户发送电子

随机推荐

  • linux内核的编译和安装

    linux内核的编译和安装 文章目录 linux内核的编译和安装 1 获取内核源码 2 编译源码 3 安装内核 4 reboot 系统加载新的内核 1 获取内核源码 登录Linux内核官方网站 可以获取源代码 使用git获取最新提交到Lin
  • flask虚拟环境搭建及flask基础

    常用端口号 http 80 https 443 ssh 22 远程访问 ftp 21 文件传输mysql 3306 redis 6379 smtp 25 邮件发送服务 pop3 110 邮件接收服务 虚拟环境 pip是python的包管理工
  • BSN-DDC 基础网络关键知识点(一)DDC背景介绍

    id BSN 2021 公众号 BSN研习社 2022年1月25日 区块链服务网络发展联盟 简称 BSN联盟 上线推出了 BSN DDC基础网络 并进入试商用阶段 同时 BSN DDC官网门户 ddc bsnbase com 上线发布 供D
  • Python——人工智能时代的通用语言

    Python对于从事数据分析的专业人士来说 并不陌生 而我正在熟悉Python的道路上 先易后难 快速驶过高速公路后 目前正在泥泞山路上挣扎 期待雨过天晴 顺利跨过瓶颈期 学习Python就像学一门外语 需要了解它的语法 按照既定的规则组词
  • TypeScript语法

    TypeScript基础语法 1 1 js与ts的区别 最大区别 js不会在赋值时检查是否与类型匹配 而ts会检查所赋的值是否与类型匹配 若不匹配则会进行报错提示 1 2 js的数据类型 两大类 1 2 1 原始数据类型 5种 原始数据类型
  • 【NOI2018模拟3.26】Cti

    Description 有一个 n m 的地图 地图上的每一个位置可以是空地 炮塔或是敌人 你需要操纵炮塔消灭敌人 对于每个炮塔都有一个它可以瞄准的方向 你需要在它的瞄准方向上确定一个它的攻击位置 当然也可以不进行攻击 一旦一个位置被攻击
  • SpringBoot集成手机验证码业务(榛子云短信服务)

    一 手机验证码的作用 举个例子 如果你开发了一个系统 那这个系统肯定会有登录功能对吧 那如果说你的密码忘记了呢 这个时候我们的解决方式是 1 联系管理员 2 再注册一个 emmm 那我以前的资料就没了呀 3 对于管理员自己而言 手动修改数据
  • 简单的介绍一下:柔性数组

    对于柔性数组 其实这个是在如今的大学生书本上是很难能找到的 原因在于 笔者现在就是大学生一枚 但是在C语言的书本上没有涉及到柔性数组的部分 经查略资料 我们可以找到 在如今的C语言中 C99规定 结构体中允许最后一个元素是未知大小的数组 这
  • 微信小程序支付后端逻辑

    小程序报名 生成订单 public function make order if IS POST data openid I POST openid data total I POST data total data crsNo W dat
  • SSM小技巧(一)、Controller中互相调用session中存储的内容

    首先 你需要在一个Controller中往session中存内容 取的名字必须含有大写字母 虽然博主也不清楚为什么 如果有知道的人请一定要通知博主 博主将感激不尽 Controller SessionAttributes Save 将Mod
  • LLM微调

    下面我只是分析讲解下这些方法的原理以及具体代码是怎么实现的 不对效果进行评价 毕竟不同任务不同数据集效果差别还是挺大的 文章目录 0 hard prompt soft prompt区别 1 Prefix Tuning 2 Prompt Tu
  • 实例 :教你使用简单神经网络和LSTM进行时间序列预测(附代码)

    翻译 张玲 校对 丁楠雅 本文约1500字 建议阅读5分钟 作者基于波动性标准普尔500数据集和Keras深度学习网络框架 利用python代码演示RNN和LSTM RNN的构建过程 便于你快速搭建时间序列的预测模型 图片来源 Pixaba
  • Gradle是什么

    以下总结作为本人学习笔记使用 Gradle是一个开源的自动构建工具 可以作为android studio工程的依赖管理和打包工具 包括三方库和jar包的依赖和链接 java和res等资源的编译和打包 1 在gradle之前 android的
  • 【JavaScript 编程语言】简介JavaScript 简介,手册规范

    1 1JavaScript 简介 让我们来看看 JavaScript 有什么特别之处 我们可以用它实现什么 以及哪些其他技术可以与其搭配产生奇妙的效果 什么是 JavaScript JavaScript 最初被创建的目的是 使网页更生动 这
  • AI 图片生成3D模型之

    AI 可以通过学习大量的图像数据来生成 3D 模型 这些模型可以用于许多不同的目的 如游戏开发 建筑设计和动画制作 为了生成 3D 模型 AI 系统通常需要输入许多 2D 图像 这些图像可以是从不同角度拍摄的照片或者是从视频中截取的帧 AI
  • mmdetection报错 TypeError: vars() argument must have __dict__ attribute

    下载官方代码 安装好环境后第一个demo就报错 报错1 error the following arguments are required img config checkpoint 添加 报错2 manager pyplot show
  • Spring Secutity oAuth2的学习

    李哥的博客不能看了 写文档又很浪费时间 先投个懒 贴个流程图 想去李哥哪里学习的小伙伴 这里有地址 17 Spring Security oAuth2 创建资源服务器2 哔哩哔哩 bilibili 项目中使用到了Oauth2 然后来李哥这里
  • java实现获取两个list交集,并集,差集

    import java util ArrayList import java util List import static java util stream Collectors toList public class Main publ
  • java读取文件方法大全

    一 多种方式读文件内容 1 按字节读取文件内容 2 按字符读取文件内容 3 按行读取文件内容 4 随机读取文件内容 import java io BufferedReader import java io File import java
  • PHP性能优化

    PHP性能优化首先分为三个方向 PHP语言级别的性能优化 gt PHP周边问题的性能优化 gt PHP自身优化 一 PHP语言级别的性能优化 1 多使用PHP 的内置函数 2 少使用错误抑制符 会产生额外的opcode开销 opcode 当