云服务器免费试用

php性能优化方案(php高性能)

服务器知识 0 1311

本文目录:

  • 1、有效提高ThinkPHP的应用性能的几点建议
  • 2、PHP网站怎么做SEO优化
  • 3、php 高并发解决思路解决方案

有效提高ThinkPHP的应用性能的几点建议

架构优化涉及到技术、存储、网络、服务的选型和构架,尽量使用成熟和现代的开发架构和设计模式。前后端完全分离设计,便于前后端的独立优化,也更加便于测试工作。

如果你的应用遇到了性能瓶颈,这个时候要考虑的就是优化架构而不是优化代码本身,因为架构层面的优化效果往往是最显著的。

架构的优化需要根据自身运营情况来调整,切忌不可按图索骥提前优化,反而容易得不偿失,导致技术成本提高甚至“负优化”

部署环境千万不要忘记关闭调试模式,这不仅仅是出于性能考虑,更多是基于安全因素。事实上,建议通过环境变量来配置关闭调试模式,这样部署后不需要更改任何配置文件。

因为调试模式影响日志记录信息、额外的调试信息和缓存失效,关闭调试模式能够带来一定的性能提升

使用多模块功能会增加文件的 I/O 开销和额外的配置及检查,如非必要在规划你的应用架构的时候尽量考虑使用单一模块,然后使用控制器分级来解决控制器过多的问题。

使用单一模块的性能优势,在部署到 swoole 的时候可以得到更加充分的体现,因为应用文件一旦启动服务,就会载入内存,而模块的相关文件则会每次请求重新加载。

在定义路由规则的时候,不要使用数组方式,尽量使用方法注册路由,并且多使用路由分组(或者资源路由)。分组路由可以减少路由的匹配次数,从而提升路由性能。如果你有多个域名的不同路由,也要按域名规划使用路由。

尽可能设计在路由中进行当前路由的数据验证和权限检查等操作,一方面比较清晰,另外一方面可以尽量把验证操作提前,而不必等到控制器执行。

在分组比较多的情况下,开启路由的延迟解析。

如果同一个分组下面有比较多的路由规则,建议合并路由规则

对于 GET 请求的路由,可以设置路由的请求缓存。

部署阶段,可以开启路由缓存。

首先保持良好的开发习惯,了解 Db类和模型的正确使用姿势 ,数据库本身的性能优化可以参考 MySQL性能优化的最佳21条经验 ,下面主要是对框架中数据查询相关的优化策略。

尽量减少每次请求的查询次数,并对实时性要求不高的数据查询合理规划数据查询缓存(优先考虑使用 Redis 缓存)

如果使用了关联查询, cache 方法只能用于主模型的数据缓存,但你可以使用 Cache 类的 remember 方法进行方便的数据缓存。

尽量减少查询次数是出于性能考虑,但不是必须,使用最少的查询不代表性能就一定是最高。一个复杂的 JOIN 查询性能不见得有两次简单的查询高,而使用简单的查询反而更清晰易懂,并且更方便进行数据查询缓存。

不要总是以为模型的性能一定比 Db 类低,框架的ORM查询设计经过了较为合理的优化,正确使用模型一样可以有出色的性能,而且比 Db 查询要方便很多。

尤其是对于一些复杂的设计来说使用模型关联显得比直接用Db更加简单,例如使用关联预载入查询就可以避免 N+1 查询问题。

如果用 Db 类自己实现的话,费时费力,性能还不一定优。

对于内存开销比较大的应用,在做大量数据查询和处理的时候,使用 cursor 方法,可以利用PHP的生成器特性,减少内存占用。

你会发现用户数据不论是1万还是10万级别,内存开销并没有大的变化。

涉及到对大量数据的处理,包括数据迁移、批量更新,尽量使用命令行指令运行,否则会因为超时而中断

可以通过数据集的方法完成的子集或者排序操作不要再次查询,例如:

利用下面指令在部署后生成字段缓存,可以减少每次数据表的字段查询开销。

注意:一旦数据库的表结构发生变化,必须重新生成。

每次在应用初始化或者模块初始化的时候会有一定的 I/O 开销,如果已经开启 OpCache 的话对性能影响甚微,如果比较在意的也可以通过命令行指令生成配置缓存(包括相关的公共文件和各种定义文件)。

生成应用配置缓存:

生成模块配置缓存:

注意:一旦配置或者公共文件发生变化,必须重新生成。

类库映射可以提升类库的自动加载性能,使用下面的指令可以生成系统类库和应用类库的类库映射(包括 extend 目录下的类库)。

vendor 目录下的类库可以使用 composer 的 dump-autoload 指令优化加载性能。

该命令把 PSR-0 和 PSR-4 转换为一个类映射表,来提高类的加载速度。

PHP网站怎么做SEO优化

优化网站,对于PHP来说主要有以下几点

代码分析,找出耗时长或者卡顿的代码加以优化。

循环太多:循环太多就考虑如何去掉循环,或者优化循环体结构,包括每次提前计算好变量,不在循环体内做过多运算。

IO瓶颈:就是sql语句有缺陷,或者磁盘读写过慢,网络带宽过低。sql优化包括索引优化,启用redis或memcache,分表分库等等优先顺序从前到后,网上都有很多教程。磁盘读写慢,就要考虑上固态硬盘。带宽就要联系网络运营商解决

精简前端页面。现在页面功能越来越复杂,卡顿不一定是后台,前端出现问题也很多。包括页面内容太多(适当缩减一部分网页内容),js,css,图片太大(对js,css进行压缩,去掉冗余代码等。使用压缩格式的图片,如jpg格式控制图片大小(尽量在100K甚至10K以内)启用网页缓存等)

深度优化性能,包括采用更快的PHP(PHP7.2),更快的服务器(Linux+nginx),更快的mysql(读写分离)等等。

php 高并发解决思路解决方案

php 高并发解决思路解决方案,如何应对网站大流量高并发情况。本文为大家总结了常用的处理方式,但不是细节,后续一系列细节教程给出。希望大家喜欢。

一 高并发的概念

在互联网时代,并发,高并发通常是指并发访问。也就是在某个时间点,有多少个访问同时到来。

二 高并发架构相关概念

1、QPS (每秒查询率) : 每秒钟请求或者查询的数量,在互联网领域,指每秒响应请求数(指 HTTP 请求)

2、PV(Page View):综合浏览量,即页面浏览量或者点击量,一个访客在 24 小时内访问的页面数量

--注:同一个人浏览你的网站的同一页面,只记做一次 pv

3、吞吐量(fetches/sec) :单位时间内处理的请求数量 (通常由 QPS 和并发数决定)

4、响应时间:从请求发出到收到响应花费的时间

5、独立访客(UV):一定时间范围内,相同访客多次访问网站,只计算为 1 个独立访客

6、带宽:计算带宽需关注两个指标,峰值流量和页面的平均大小

7、日网站带宽: PV/统计时间(换算到秒) * 平均页面大小(kb)* 8

三 需要注意点:

1、QPS 不等于并发连接数(QPS 是每秒 HTTP 请求数量,并发连接数是系统同时处理的请求数量)

2、峰值每秒请求数(QPS)= (总 PV 数*80%)/ (六小时秒数*20%)【代表 80%的访问量都集中在 20%的时间内】

3、压力测试: 测试能承受的最大并发数 以及测试最大承受的 QPS 值

4、常用的性能测试工具【ab,wrk,httpload,Web Bench,Siege,Apache JMeter】

四 优化

1、当 QPS 小于 50 时

优化方案:为一般小型网站,不用考虑优化

2、当 QPS 达到 100 时,遇到数据查询瓶颈

优化方案: 数据库缓存层,数据库的负载均衡

3、当 QPS 达到 800 时, 遇到带宽瓶颈

优化方案:CDN 加速,负载均衡

4、当 QPS 达到 1000 时

优化方案: 做 html 静态缓存

5、当 QPS 达到 2000 时

优化方案: 做业务分离,分布式存储

五、高并发解决方案案例:

1、流量优化

防盗链处理(去除恶意请求)

2、前端优化

(1) 减少 HTTP 请求[将 css,js 等合并]

(2) 添加异步请求(先不将所有数据都展示给用户,用户触发某个事件,才会异步请求数据)

(3) 启用浏览器缓存和文件压缩

(4) CDN 加速

(5) 建立独立的图片服务器(减少 I/O)

3、服务端优化

(1) 页面静态化

(2) 并发处理

(3) 队列处理

4、数据库优化

(1) 数据库缓存

(2) 分库分表,分区

(3) 读写分离

(4) 负载均衡

5、web 服务器优化

(1) nginx 反向代理实现负载均衡

(2) lvs 实现负载均衡

【php性能优化方案】的内容来源于互联网,如引用不当,请联系我们修改。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942@qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: php性能优化方案(php高性能)
本文地址: https://solustack.com/21722.html

相关推荐:

网友留言:

我要评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。