php优化

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 2015年12月14日 21:20:29 之前写过两篇文章: xdebug配置 xdebug trace 结果分析 第二篇里边有两个很耗时间和内存的线条:  第一个斜坡: 从mysql里读取数据后, 用while循环调用$result->fetch_assoc()将数据存放到数组里 这...

2015年12月14日 21:20:29

之前写过两篇文章:

xdebug配置

xdebug trace 结果分析

第二篇里边有两个很耗时间和内存的线条: 

第一个斜坡:

从mysql里读取数据后, 用while循环调用$result->fetch_assoc()将数据存放到数组里

这里的缺点是循环调用该函数, 如果数据量比较大的话,会有很多的函数调用(上下文切换),很浪费效率

优化:

php源码安装.configure时指定mysqlnd驱动,老版本php源码安装时需要指定mysql安装的相关几个地址

确保这一项以后, 使用$result->fetch_all(MYSQLI_ASSOC) 一次性将result转换为关联数组

 1 //将结果集转换成数组返回
 2     //如果field不为空,则返回的数组以$field为键重新索引
 3     public function rstoarray(&$result, $field = '')
 4     {
 5         $arrRs = $result->fetch_all(MYSQLI_ASSOC); //该函数只能用于php的mysqlnd驱动
 6         $result->free();
 7         
 8         if ($field) {
 9             $arrResult = [];
10             foreach ($arrRs as $v) {
11                 $arrResult[$v[$field]] = $v;
12             }
13             return $arrResult;
14         }
15         
16         return $arrRs;
17     }

 

图中有一个水平线,内存没有增加,但是耗费了很多时间

那里的代码是一段排序操作,用到了php的usort(); 自定义排序,

需要自己写一个排序用的回调函数, 这段效率特别低

优化:

[

'a' => ['sort' => 123],

'b' => ['sort' => 234]

.....

]

先遍历要排序的二维数组(如上边的那个), 生成一个一维数组, 键为二维数组的键,值为排序用的那个值:

[

'a' => 123,

'b' => 234

]

然后用php的排序函数: asort() 或者 arsort();对这个一维数组排序, 然后根据对应关系生成一个新的完整的数组, 这样会快很多

 1 //按照二维数组中的某个键进行排序
 2     public function mysort(&$arr, $key, $desc = '')
 3     {
 4         $tmp = array();
 5         foreach ($arr as $k=>$v) {
 6             $tmp[$k] = $v[$key];
 7         }
 8         
 9         if ($desc) {
10             arsort($tmp);
11         } else {
12             asort($tmp);
13         }
14         
15         $result = array();
16         foreach ($tmp as $k => $v) {
17             $result[$k] = $arr[$k];
18         }
19         
20         return $result;
21     }

 

SummerPHP 框架

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
5月前
|
SQL 缓存 PHP
PHP技术探究:优化数据库查询效率的实用方法
本文将深入探讨PHP中优化数据库查询效率的实用方法,包括索引优化、SQL语句优化以及缓存机制的应用。通过合理的优化策略和技巧,可以显著提升系统性能,提高用户体验,是PHP开发者不容忽视的重要议题。
|
5月前
|
缓存 PHP 开发者
PHP中的自动加载机制及其优化方法
传统的PHP开发中,经常会遇到类文件加载繁琐、效率低下的情况,而PHP的自动加载机制能够很好地解决这一问题。本文将深入探讨PHP中的自动加载机制,介绍其原理及实现方式,并提出了一些优化方法,帮助开发者提升代码加载效率,提高应用性能。
|
12天前
|
设计模式 算法 数据库连接
PHP中的设计模式:如何优化你的代码结构
在本文中,我们将深入探讨PHP中的设计模式。设计模式是解决常见软件设计问题的最佳实践。它们不是具体的代码,而是一种编程经验的总结。掌握设计模式可以帮助你写出更高效、灵活和可维护的代码。本文将介绍几种常见的设计模式,并通过示例展示如何在PHP项目中应用这些模式。无论你是PHP初学者还是有经验的开发者,都能从本文中获得启发和实用的技巧。
|
13天前
|
缓存 监控 测试技术
php-fpm优化调优
php-fpm优化调优
|
13天前
|
缓存 监控 算法
分析慢日志文件来优化 PHP 脚本的性能
分析慢日志文件来优化 PHP 脚本的性能
|
2月前
|
存储 前端开发 JavaScript
优化PHP代码性能
【8月更文挑战第3天】优化PHP代码性能
42 16
|
2月前
|
安全 Java 云计算
JSF 应用究竟何去何从?云端部署能否成为其全新突破点?快来一探究竟!
【8月更文挑战第31天】本文介绍了将JavaServer Faces(JSF)应用部署到云平台的过程。首先,根据成本、功能、可靠性和安全性选择合适的云平台。接着,展示了构建简单JSF应用的示例代码。最后,以AWS Elastic Beanstalk为例,详细说明了部署流程。部署至云端可提升应用的可用性、扩展性和安全性。
32 0
|
2月前
|
安全 前端开发 PHP
构建与验证表单:传统PHP与Laravel框架的比较分析——探索Web开发中表单处理的优化策略和最佳实践
【8月更文挑战第31天】在 Web 开发中,表单构建与数据验证至关重要。传统 PHP 方法需手动处理 HTML 表单和数据验证,而 Laravel 框架则提供了一种更现代、高效的解决方案。本文通过对比传统 PHP 和 Laravel 的方法,探讨表单构建与验证的最佳实践。Laravel 通过简洁的语法糖、内置的数据过滤和验证机制,显著提升了代码的安全性和可维护性,适用于大型项目或需要快速开发的场景。然而,在追求灵活性的小型项目中,直接使用 PHP 仍是不错的选择。了解两者的优劣,有助于开发者根据项目需求做出最佳决策。
29 0
|
3月前
|
缓存 PHP 数据库
PHP 优化技巧与实践
在现代网络应用开发中,PHP作为一种强大的服务器端脚本语言,其性能优化成为提高应用性能和用户体验的关键。本文将探讨一些高效利用PHP的方法与实践,帮助开发者在编写和优化PHP代码时更加高效和专业。 【7月更文挑战第9天】