使用ltrace工具跟踪PHP库函数调用的方法


Posted in PHP onApril 25, 2016

本文实例讲述了使用ltrace工具跟踪PHP库函数调用的方法。分享给大家供大家参考,具体如下:

可能大家已经很熟悉使用strace来跟踪系统调用,今天介绍一个跟踪库函数的利器ltrace

比如我有这么一段PHP代码

test.php:

<?php
 $y = '1380';
 $arr = array();
 for($i = 0; $i < 2000; $i ++){
   $arr[] = "{$i}"; //故意用引号包起来设成字符串
 }
 for($i = 0; $i < 2000; $i ++){
   if(!in_array($y, $arr)) continue;
 }
?>

ltrace -c /usr/local/php/bin/php test.php (-c表示汇总)

会看到输出如下:

% time   seconds usecs/call   calls   function
------ ----------- ----------- --------- --------------------
95.02  7.417240     368   20146 strtol
2.15  7.160390     413   17316 memcpy
1.63  5.522641     240   22966 free
 0.67  2.275374   2275374     1 curl_global_cleanup
 0.54  2.235466     617   3618 __ctype_tolower_loc
 0.16  2.123547    1194   1778 strrchr
 0.17  1.532224     67   22836 malloc
 0.29  0.382083     67   5678 strlen

可以看到 strtol几乎用去了执行时间的95.02%,瓶颈就找出来了。及PHP会在in_array()测试时试图将字符串行数字转换为long,这会耗费大量时间。所以只要将字符串都转换为整形即可大幅度提高效率。

ltrace真心是个好工具

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
php flush类输出缓冲剖析
Oct 19 PHP
php程序的国际化实现方法(利用gettext)
Aug 14 PHP
PHP5中Cookie与 Session使用详解
Apr 30 PHP
基于PHP导出Excel的小经验 完美解决乱码问题
Jun 10 PHP
PHP+MySQL插入操作实例
Jan 21 PHP
PHP SPL标准库中的常用函数介绍
May 11 PHP
PHP封装的HttpClient类用法实例
Jun 17 PHP
PHP 中 Orientation 属性判断上传图片是否需要旋转
Oct 16 PHP
php将文件夹打包成zip文件的简单实现方法
Oct 04 PHP
简单实用的PHP文本缓存类实例
Mar 22 PHP
PHP7使用ODBC连接SQL Server2008 R2数据库示例【基于thinkPHP5.1框架】
May 06 PHP
laravel 多图上传及图片的存储例子
Oct 14 PHP
PHP实现的线索二叉树及二叉树遍历方法详解
Apr 25 #PHP
PHP简单实现生成txt文件到指定目录的方法
Apr 25 #PHP
PHP的全局错误处理详解
Apr 25 #PHP
PHP预定义变量9大超全局数组用法详解
Apr 23 #PHP
php构造函数与析构函数
Apr 23 #PHP
浅谈PHP中的
Apr 23 #PHP
简单谈谈PHP中的include、include_once、require以及require_once语句
Apr 23 #PHP
You might like
Php 构造函数construct的前下划线是双的_
2009/12/08 PHP
Apache中php.ini的设置方法
2013/02/28 PHP
PHP之生成GIF动画的实现方法
2013/06/07 PHP
php一次性删除前台checkbox多选内容的方法
2013/09/22 PHP
在SAE上搭建最新wordpress的方法
2014/12/21 PHP
微信获取用户地理位置信息的原理与步骤
2015/11/12 PHP
PHP实现二维数组按某列进行排序的方法
2016/11/18 PHP
php实现base64图片上传方式实例代码
2017/02/22 PHP
关于ThinkPhp 框架表单验证及ajax验证问题
2017/07/19 PHP
javascript定时保存表单数据的代码
2011/03/17 Javascript
Js 回车换行处理的办法及replace方法应用
2013/01/24 Javascript
解析ScrollPic在ie8下只滚动一遍,然后变为空白 ie6,ie7,chrome,firefox正常
2013/06/26 Javascript
JavaScript 基本概念
2015/01/20 Javascript
JavaScript 面向对象与原型
2015/04/10 Javascript
简介JavaScript中的push()方法的使用
2015/06/09 Javascript
以JavaScript来实现WordPress中的二级导航菜单的方法
2015/12/14 Javascript
详解Wondows下Node.js使用MongoDB的环境配置
2016/03/01 Javascript
xmlplus组件设计系列之路由(ViewStack)(7)
2017/05/02 Javascript
解决低版本的浏览器不支持es6的import问题
2018/03/09 Javascript
[03:00]2014DOTA2国际邀请赛 Titan淘汰潸然泪下Ohaiyo专访
2014/07/15 DOTA
[18:16]sakonoko 2017年卡尔集锦
2018/02/06 DOTA
Python输出9*9乘法表的方法
2015/05/25 Python
Python3使用SMTP发送带附件邮件
2020/06/16 Python
你还在@微信官方?聊聊Python生成你想要的微信头像
2019/09/25 Python
Python3.7 读取音频根据文件名生成脚本的代码
2020/04/07 Python
通过代码实例了解Python异常本质
2020/09/16 Python
HTML中fieldset标签概述及使用方法
2013/02/01 HTML / CSS
德国化妆品和天然化妆品网上商店:kosmetikfuchs.de
2017/06/09 全球购物
英国著名的小众美容品牌网站:Alyaka
2017/08/08 全球购物
总经理驾驶员岗位职责
2013/12/04 职场文书
幼儿园中班教师寄语
2014/04/03 职场文书
劳动竞赛活动总结
2014/05/05 职场文书
学习之星事迹材料
2014/05/17 职场文书
施工安全汇报材料
2014/08/17 职场文书
村干部群众路线整改措施思想汇报
2014/10/12 职场文书
MySQL 全文检索的使用示例
2021/06/07 MySQL