使用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 相关文章推荐
基于mysql的论坛(5)
Oct 09 PHP
一个简单的PHP投票程序源码
Mar 11 PHP
php 的加密函数 md5,crypt,base64_encode 等使用介绍
Apr 09 PHP
PHP中一些可以替代正则表达式函数的字符串操作函数
Nov 17 PHP
PHP中if和or运行效率对比
Dec 12 PHP
php实现二进制和文本相互转换的方法
Apr 18 PHP
PHP实现的一致性哈希算法完整实例
Nov 14 PHP
如何离线执行php任务
Feb 21 PHP
PHP-CGI远程代码执行漏洞分析与防范
May 07 PHP
PHP面向对象程序设计子类扩展父类(子类重新载入父类)操作详解
Jun 14 PHP
php实现 master-worker 守护多进程模式的实例代码
Jul 20 PHP
php7中停止php-fpm服务的方法详解
May 09 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 深入理解strtotime函数的使用详解
2013/05/23 PHP
php中执行系统命令的方法
2015/03/21 PHP
PHP生成word文档的三种实现方式
2016/11/14 PHP
PHP+jQuery实现滚屏无刷新动态加载数据功能详解
2017/05/04 PHP
JavaScript XML实现两级级联下拉列表
2008/11/10 Javascript
jquery动态改变onclick属性导致失效的问题解决方法
2013/12/04 Javascript
构造函数+原型模式构造js自定义对象(最通用)
2014/05/12 Javascript
兼容主流浏览器的JS复制内容到剪贴板
2014/12/12 Javascript
JavaScript 变量、作用域及内存
2015/04/08 Javascript
jQuery防止重复绑定事件的解决方法
2016/05/14 Javascript
JavaScript通过HTML的class来获取HTML元素的方法总结
2016/05/24 Javascript
jQuery的ready方法实现原理分析
2016/10/26 Javascript
vue.js+Echarts开发图表放大缩小功能实例
2017/06/09 Javascript
详解关于react-redux中的connect用法介绍及原理解析
2017/09/11 Javascript
JavaScript作用域、闭包、对象与原型链概念及用法实例总结
2018/08/20 Javascript
解决vue axios的封装 请求状态的错误提示问题
2018/09/25 Javascript
使用Vuex解决Vue中的身份验证问题
2018/09/28 Javascript
TypeScript基础入门教程之三重斜线指令详解
2018/10/22 Javascript
微信小程序上传图片并等比列压缩到指定大小的实例代码
2019/10/24 Javascript
javaScript代码飘红报错看不懂?读完这篇文章再试试
2020/08/19 Javascript
matplotlib绘制符合论文要求的图片实例(必看篇)
2017/06/02 Python
python数据结构链表之单向链表(实例讲解)
2017/07/25 Python
python构建基础的爬虫教学
2018/12/23 Python
Python实现程序判断季节的代码示例
2019/01/28 Python
python做反被爬保护的方法
2019/07/01 Python
python实现按行分割文件
2019/07/22 Python
浅谈python3打包与拆包在函数的应用详解
2020/05/02 Python
python opencv pytesseract 验证码识别的实现
2020/08/28 Python
HTML5操作WebSQL数据库的实例代码
2017/08/26 HTML / CSS
香港时尚女装购物网站:ZAFUL
2017/07/19 全球购物
拉飞逸官网:Lafayette 148 New York
2020/07/15 全球购物
法院实习人员自我鉴定
2013/09/26 职场文书
大学自主招生自荐信
2013/12/16 职场文书
团拜会策划方案
2014/06/07 职场文书
2015年世界艾滋病日活动总结
2015/03/24 职场文书
2015年采购部工作总结
2015/04/23 职场文书