使用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和XSS跨站攻击的防范
Apr 17 PHP
Snoopy类使用小例子
Apr 15 PHP
php 智能404跳转代码,适合换域名没改变目录的网站
Jun 04 PHP
PHPer 需要了解的 5 个 Composer 小技巧
Aug 18 PHP
PHP用反撇号执行外部命令
Apr 14 PHP
php中file_exists函数使用详解
May 08 PHP
PHP简单获取多个checkbox值的方法
Jun 13 PHP
php实现的debug log日志操作类实例
Jul 12 PHP
几行代码轻松实现PHP文件打包下载zip
Mar 01 PHP
PHP实现微信支付(jsapi支付)流程步骤详解
Mar 15 PHP
PHP通过调用新浪API生成t.cn格式短网址链接的方法详解
Feb 20 PHP
laravel入门知识点整理
Sep 15 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在项目中寻找代码的坏味道(综艺命名)
2012/07/19 PHP
解析PHP中常见的mongodb查询操作
2013/06/20 PHP
PHP的AES加密算法完整实例
2016/07/20 PHP
[原创]静态页面也可以实现预览 列表不同的显示方式
2006/10/14 Javascript
js下用gb2312编码解码实现方法
2009/12/31 Javascript
ie6下png图片背景不透明的解决办法使用js实现
2013/01/11 Javascript
Jquery显示、隐藏元素以及添加删除样式
2013/08/09 Javascript
jQuery.event兼容各浏览器的event详细解析
2013/12/18 Javascript
Javascript实现的常用算法(如冒泡、快速、鸽巢、奇偶等)
2014/04/29 Javascript
javascript实现十六进制颜色值(HEX)和RGB格式相互转换
2014/06/20 Javascript
jquery实现顶部向右伸缩的导航区域代码
2015/09/02 Javascript
继续学习javascript闭包
2015/12/03 Javascript
Node.js的Express框架使用上手指南
2016/03/12 Javascript
全面了解JavaScript对象进阶
2016/07/19 Javascript
Node.js利用Net模块实现多人命令行聊天室的方法
2016/12/23 Javascript
jQuery EasyUI开发技巧总结
2017/09/26 jQuery
VuePress 静态网站生成方法步骤
2019/02/14 Javascript
Vue项目路由刷新的实现代码
2019/04/17 Javascript
简单了解Javscript中兄弟ifream的方法调用
2019/06/17 Javascript
jquery获取并修改触发事件的DOM元素示例【基于target 属性】
2019/10/10 jQuery
JS中FileReader类实现文件上传及时预览功能
2020/03/27 Javascript
Element实现表格嵌套、多个表格共用一个表头的方法
2020/05/09 Javascript
[55:56]NB vs Infamous 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.22
2019/09/05 DOTA
Python Web服务器Tornado使用小结
2014/05/06 Python
python数据结构之图的实现方法
2015/07/08 Python
使用python加密自己的密码
2015/08/04 Python
最大K个数问题的Python版解法总结
2016/06/16 Python
python调用百度REST API实现语音识别
2018/08/30 Python
Python爬取知乎图片代码实现解析
2019/09/17 Python
实现Python与STM32通信方式
2019/12/18 Python
Pytorch evaluation每次运行结果不同的解决
2020/01/02 Python
wordpress添加Html5的表单验证required方法小结
2020/08/18 HTML / CSS
小学后勤管理制度
2014/01/14 职场文书
四年级评语大全
2014/04/21 职场文书
机械生产实习心得体会
2016/01/22 职场文书
Python中requests库的用法详解
2022/06/05 Python