首页 > 编程知识 正文

php性能优化点,php配置优化

时间:2024-03-07 18:23:45 阅读:332321 作者:EIHA

本文目录一览:

如何设置宝塔面板优化php服务器性能

1.定期释放内存

2.添加swap

3.安装php缓存扩展

4.php配置调整

5.php并发调整

6.php版本和mysql数据版本

7.卸载多余扩展插件

8.搭配阿里云存储oss使用

以上纯手打。只是列出个大概。具体还得自己慢慢优化。

有效提高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 转换为一个类映射表,来提高类的加载速度。

php7 mysql5.7 与以前版本 有哪些性能优化

1.首先可以考虑业务层面优化,即垂直分表。

垂直分表就是把一个数据量很大的表,可以按某个字段的属性或使用频繁程度分类,拆分为多个表。

如有多种业务类型,每种业务类型入不同的表,table1,table2,table3.

如果日常业务不需要使用所有数据,可以按时间分表,比如说月表。每个表只存一个月记录。

2.架构上的优化,即水平分表。

水平分表就是根据一列或多列数据的值把数据行放到多个独立的表里,这里不具备业务意义。

如按照id分表,末尾是0-9的数据分别插入到10个表里面。

可能你要问,这样看起来和刚才说的垂直分表没什么区别。只不过是否具备业务意义的差异,都是按字段的值来分表。

实际上,水平分表现在最流行的实现方式,是通过水平分库来实现的。即刚才所说的10个表,分布在10个mysql数据库上。这样可以通过多个低配置主机整合起来,实现高性能。

PHP网站怎么做SEO优化

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

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

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

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

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

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

如何设置BT宝塔面板并优化php服务器性能

设置宝塔面板需要安装组件,然后参考宝塔面板优化 php 服务器性能,按照里面的设置,一项项的操作完毕,就差不多了。

宝塔面板把优化php已经变成一件很简单的事情了。

如何对低硬件配置的中小型php网站进行性能优化

本人对php不熟悉,现在采用PHP的magento开源项目来做,在尽量少代码修改的情况下让页面加载快些(期望日IP少于2,000,PV少于50,000,首页打开3s以内)。网站是运行在Digital ocean的VPS(1GB 内存,30GB SSD硬盘)上的,不能做负载均衡。

这个站的图片比较多,也比较大,但总体数据量在10GB以下。在chrome下监控了打开速度,发现首页文件等待时间达到了5s,而接收时间为几百毫秒。另外一些静态文件(JS,CSS很大,并且都在head内)也block住了其他页面元素的下载和页面渲染。所以需要对页面和服务器同时进行优化。

我的想法是从以下几个方面来做:

1.首先从架构上使用lanmp(偏向这个)或者lamp。

打算使用网上的一键安装包,不太清楚这几个之间最佳的版本组合是什么样的(都用最新版本?)? 是自己单独编译还是一键安装好?

2.服务端优化,主要使用缓存手段

1)Zend Optimizer优化PHP

2)APC、eaccelerator或者XCache对PHP缓存以及最新出来的Opcache。哪个比较好?

3)Varnish配合Nginx进行缓存静态资源缓存。相对于squid,哪个比较好?

4)memcached进行数据库缓存

1-4项同时使用不知道会不会有没有冲突?或者有没有更好的方案。因为不想对代码进行大改,所以服务端缓存最佳实践这块请重点给出意见。

3. 使用CDN加速静态资源

4. 优化静态资源,使用minify来合并压缩CSS,JS这些静态资源

5. 启用gzip

6. 对图片和JS等静态资源增加Expires头,这条应该算页面优化吧,放到后面来。

参考了一些资料后发现优化方法有很多,用的太多方法(特别是缓存手段)隐患越大,有没有优化的最佳策略或者方法论(而不仅仅从工具上)?

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。