使用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 相关文章推荐
IIS php环境配置PHP5 MySQL5 ZendOptimizer phpmyadmin安装与配置
Nov 18 PHP
php中将数组存到文件里的实现代码
Jan 19 PHP
使用php统计字符串中中英文字符的个数
Jun 23 PHP
php读取mysql中文数据出现乱码的解决方法
Aug 16 PHP
php 根据url自动生成缩略图并处理高并发问题
Jan 23 PHP
php ci框架中加载css和js文件失败的原因及解决方法
Jul 29 PHP
php中多维数组按指定value排序的实现代码
Aug 19 PHP
php不使用copy()函数复制文件的方法
Mar 13 PHP
再Docker中架设完整的WordPress站点全攻略
Jul 29 PHP
PHP使用pear实现mail发送功能 windows环境下配置pear
Apr 15 PHP
PHP命名空间namespace用法实例分析
Sep 27 PHP
php实现算术验证码功能
Dec 05 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
谏山创故乡大分县日田市水坝将设立《进击的巨人》立艾伦、三笠以及阿尔敏的铜像!
2020/03/06 日漫
PHP 杂谈《重构-改善既有代码的设计》之一 重新组织你的函数
2012/04/09 PHP
Yii的CDbCriteria查询条件用法实例
2014/12/04 PHP
php从数据库查询结果生成树形列表的方法
2015/04/17 PHP
PHP基于phpqrcode生成带LOGO图像的二维码实例
2015/07/10 PHP
关于PHP通用返回值设置方法
2017/03/31 PHP
PHP 获取 ping 时间的实现方法
2017/09/29 PHP
PHP实现图片防盗链破解操作示例【解决图片防盗链问题/反向代理】
2020/05/29 PHP
极酷的javascirpt,让你随意编辑任何网页
2007/02/25 Javascript
javascript常用对话框小集
2013/09/13 Javascript
jQuery多个input求和的实现方法
2015/02/12 Javascript
jQuery插件Tooltipster实现漂亮的工具提示
2015/04/12 Javascript
js插件设置innerHTML时在IE8下提示“未知运行时错误”解决方法
2015/04/25 Javascript
JS小数运算出现多为小数问题的解决方法
2016/06/02 Javascript
Bootstrap前端开发案例二
2016/06/17 Javascript
jquery.Jcrop结合JAVA后台实现图片裁剪上传实例
2016/11/05 Javascript
jquery实现异步加载图片(懒加载图片一种方式)
2017/04/24 jQuery
详解Vue.js分发之作用域槽
2017/06/13 Javascript
jquery基于layui实现二级联动下拉选择(省份城市选择)
2017/06/20 jQuery
详解angular2如何手动点击特定元素上的点击事件
2018/10/16 Javascript
Vue实现类似Spring官网图片滑动效果方法
2019/03/01 Javascript
JavaScript数组排序的六种常见算法总结
2020/08/18 Javascript
Nuxt的路由配置和参数传递方式
2020/11/06 Javascript
[02:37]2015国际邀请赛选手档案—LGD.Xiao8
2015/07/28 DOTA
Python中str is not callable问题详解及解决办法
2017/02/10 Python
python boto和boto3操作bucket的示例
2020/10/30 Python
通过Django Admin+HttpRunner1.5.6实现简易接口测试平台
2020/11/11 Python
火山咖啡:Volcanica Coffee
2019/10/29 全球购物
个人简历自我评价八例
2013/10/31 职场文书
聚美优品广告词改编
2014/03/14 职场文书
劲霸男装广告词
2014/03/21 职场文书
合唱兴趣小组活动总结
2014/07/10 职场文书
加强机关作风建设心得体会
2014/10/22 职场文书
2014年社区计生工作总结
2014/11/18 职场文书
爱护环境卫生倡议书
2015/04/29 职场文书
创业计划书之酒厂
2019/10/14 职场文书