XDebug安装配置教程

XDebug是一个开放源代码的PHP程序调试性能分析器(即一个Debug工具),可以用来跟踪,调试分析PHP程序的运行状况。相比echoprint_r()var_dump()printf()函数,使用XDebug的效率和精准度更高、也更快捷。

1 安装

XDebug官网下载地址:https://xdebug.org/download.php

1.1 Windows服务器

到XDebug官网下载DLL文件,并将DLL文件放到PHP的ext目录下。

下载的dll文件必须与PHP的版本一致,通过phpinfo()查看当前PHP的版本号、架构位数、VC版本以及是否为安全线程。

例如,我本地的phpinfo()输出与以上相关的信息为:

  • PHP Version7.1.0
  • Architecturex64
  • Zend Extension BuildAPI320160303,NTS,VC14

所以我要下载的XDebug扩展文件为:PHP 7.1 VC14 (64 bit)

因为扩展名没有TS,是非线程安全,即NTS,与PHP的API320160303,NTS,VC14信息对应。

然后修改php.ini文件,在后面加上:

[XDebug]
zend_extension = "D:\php\php54n\ext\php_xdebug-2.5.0-7.1-vc14-nts-x86_64.dll"

1.2 Linux服务器

首先,到XDebug官网下载源码,然后用命令安装。

$ wget https://xdebug.org/files/xdebug-2.4.0.tgz
$ phpize
$ ./configure
$ make
$ sudo make install

64位Linux系统会将 xdebug.so 文件安装到  /usr/lib64/php/modules/ 目录下。

修改php.ini文件,加上如下两行。

[XDebug]
zend_extension = /usr/lib64/php/modules/xdebug.so

也可以在/etc/php.d/下新建xdebug.ini文件,内容一样,PHP会自动加载该目录下的文件。

2 配置

接着,打开php.ini,在[XDebug]部分下面继续添加如下# Debug Config和# Profiler Config后的配置,如下:

[XDebug]
zend_extension = /usr/lib64/php/modules/xdebug.so

; Debug Config
xdebug.remote_enable = 1
xdebug.remote_handler = "dbgp"
xdebug.remote_host = "127.0.0.1"
xdebug.remote_port = 9000
xdebug.remote_log = "/var/log/php-fpm/xdebug.log"

; Profiler Config
xdebug.profiler_enable = 1
xdebug.profiler_enable_trigger = 1
xdebug.profiler_output_dir = "/tmp/xdebug"
xdebug.profiler_output_name = "out.%t-%s"

如果只是用于调试,那么只要加#Debug Config和后面的几行。如果调试客户端(如:PHPStorm IDE)和PHP不在同一电脑上,则需要把xdebug.remote_host配置成调试客户端的IP。

如果要PHP程序性能分析,则再加上# Profiler Config以及后面的配置。

查看XDebug的所有配置

3 编辑器配置

参考:http://www.awaimai.com/1290.html

PhpStorm配置XDebug调试PHP

1 PHP配置

首先需要配置PHP,请参考《XDebug安装配置教程》。

2 配置 XDebug

路径:File > Settings > Languages & Frameworks > PHP > Debug

phpstrom-debug-02.png

3 配置 Server

路径:File SettingsLanguages & Frameworks PHPServers

phpstrom-debug-01.png

其中,Host 是调试时浏览器访问的域名。

注意:如果所谓的“远程服务器”就在本地的话,就不需要勾选“Use path mappings(select if the servers is remote or symlinks are used)

4 设置调试项

选择菜单 Run Edit Configurations,弹出“Run/Debug Configrations”对话框:

phpstrom-debug-03.png

phpstrom-debug-04.png

5 开始调试页面

Shift + F9,或菜单选择 Run > Debug 调试名称,开启调试。

phpstrom-debug-06.png

特别说明下:

如果选择了 Run > Start Listening for PHP Debug connections,则PHPStorm会监听浏览器,如果浏览器访问第4步的”Start Url“,那么PHPStorm会自动跳转到断点处。点击调试按钮,一步一步调试吧!

常用的几个快捷键:

  • F7:步入
  • F8:跳过
  • Shift + F8:步出
  • Alt + F9:调到光标处

所有快捷键最好从 Run 菜单下查看。

 

参考资料:

  1. http://www.awaimai.com/1029.html
  2. 【总结1】PhpStorm配置XDebug(远程)调试PHP

使用Mysql存储过程快速生成100万条测试数据

DROP PROCEDURE IF EXISTS `mytest`;
DELIMITER ;;
CREATE PROCEDURE `mytest`(in nums int)
BEGIN
 declare i int;
 SET i=0;
 WHILE i<=nums DO
 SET @user_id = (select id from user order by rand() limit 1);
 SET @make_time = FLOOR(UNIX_TIMESTAMP() + RAND() * 86400);
 INSERT INTO stream_order(user_id,content,created_time) VALUES(@user_id,concat('test_',i),@make_time);
 SET i = i + 1;
 END WHILE;
END
;;
DELIMITER ;
call mytest(1000000);

mysql存储过程使用完后删除:

DROP PROCEDURE IF EXISTS `mytest`;

参考:https://my.oschina.net/songxinqiang/blog/615804

 

phpStorm 之 live template

为了缩短写重复代码的时间及提高phpStorm的开发效率,咱们有必要学一下phpStorm的live template功能,可以自定义自己想要的代码缩写规则。步骤如下:

第一步:打开Settings

1

第二步:新建一个文件夹myown

2

第三步:添加代码缩写规则

3

第四步:设定缩写作用的范围,模板中使用就选html,控制器等php类中使用就选PHP。

4

优秀程序员无他-善假于物也

运用一门程序设计语言对大多数程序员来说是小菜一碟,但是更上一层楼成为一名专家级的软件开发者,恐怕目前还是大多数人的梦想。《程序员的思维修炼》一书中将程序员分为5个层级:新手,高级新手,胜任者,精通者,专家。根据作者的调查研究结果,在这5个层级中,大多数的程序员属于高级新手。而且居于这个层级的程序员从入行1、2年的到工作10来年都大有人在。

身为一个程序员,如何才能尽快的突破自身的瓶颈,得到快速的提升那?这可真不是三言两语可以说清楚。这得益于养成了较好的学习习惯,每天都保持汲取知识。这些习惯大都是同我身边的同事身上偷来的。现在,我就把这些东西分享给大家,一起共勉。

我们无需摸着石头过河,因为前人已经给我们总结了很多宝贵的经验。

  1. 请将google作为你的搜索引擎。 这点放在第一条表明了它绝对是重中之重。当你尝试使用google做一段时间的技术搜索后,你会发现百度是多么的低效和不靠谱。同样一个技术关键字,google结果的匹配程度会远高于百度。如果你说你英文能力差的话,那么请赶快补习英语。在我身边我还没发现一个很牛逼的程序员他的英文很差劲。外国人的技术文章大都很细腻,很有条理,并且注重由浅入深,覆盖面广。
  2. 学会对自己制定目标并执行。 有人说,我有目标,那就是1年精通xx语言。我说,这样的目标等于没有目标。制定目标必须要遵循SMART原则,那就是:
    • 目标必须是具体的(Specific)
    • 目标必须是可以衡量的(Measurable)
    • 目标必须是可以达到的(Attainable)
    • 目标必须和其他目标具有相关性(Relevant)
    • 目标必须具有明确的截止期限(Time-based)

    不可被验证的目标只能说是口号,而喊口号又恰恰是中国人最擅长的。要建立起可验证的目标,还需要对目标进行追踪。在对目标进行追踪验证的过程中可以使用一些工具辅助,比如我使用的就是wunderList

  3. 使用代码托管网站管理你的代码。 作为程序员,学习新东西时少不了写一些代码,demo。而后随后就丢掉。这是一种不好的习惯。你应该学会管理你的代码,让它们成为你的宝贵财富。目前有很多免费的代码托管网站,首推githubgithub是全球最大的源代码托管网站,很多著名的开源框架都将其源代码托管在上面,如Jquery,Junit,Ruby,Clojure等。在这里,你可以上传你的源代码分享给他人。也可以方便的查看他人的优秀源码。如果你愿意,也可以成为一名志愿者,一起与他人开发一个开源项目。一切只需要一个git客户端和一个github账号就可以搞定。
  4. 使用日志对知识进行总结。一个不善于总结的程序员绝不是一个优秀程序员。SMART管理中有很重要的一条,那就是目标必须是可衡量的。而我们在学习技术的过程中,除了产出的code本身,日志也是一个重要的可衡量的产出物。你可以记下所犯的错误,以避免重犯,也可以记下自己的所得,梳理思路。推荐一款日志工具evernote。它支持几乎所有的操作系统和mobile平台,并可以方便的将日志同步到云端。对于一些日志你可以再加工一下发表到博客上,接受大家的检阅,并扩大自己的影响力。另外,mind map也是不错的梳理思路、回顾总结的好方式。比如我学习了正则表达式,就画了一张mind map来记录正则表达式的全部语法,以后如有遗忘只需看一下该图表即可。
  5. 阅读成为你的日常习惯。软件工程是一种知识生产活动,前人的经验的载体就是文字。作为IT人士,知识更迭是很频繁的,不了解外面的世界很容易被遗弃。我们不仅要热爱阅读,还要读好书,读好文章。养成良好的阅读习惯是每个程序员应当具备的素质之一。这里推荐一个网站,豆瓣读书。上面有很多技术书籍的信息,书评等,可以成为你阅读的一个参考。另外,鄙人也强烈推荐了一些好书,想看的可以访问这里
  6. 熟练使用各种快捷键。对于程序员来说,提高速度就意味着了生产率。提高了生产率,你就有了更多的时间去展开新的学习。熟练使用快捷键的好处不只是节省时间,而是将你的大脑从重复机械的劳动中解放出来,能够关注到更重要的部分。大到操作系统,小到浏览器,都有自己各种各样的快捷键。尤其对于程序员天天使用的IDE来说,掌握快捷键尤其重要。从现在开始,打印一份IDE的快捷键大全放在桌面上,每天都要熟悉其中的几个,用不了一星期你就会发现你的编程效率至少会提升30%以上。别质疑,因为我就是这样做的。

不积跬步,无以至千里。要想成为优秀程序员,光有一腔热血是不够的,一定要持之以恒,坚持不懈的持续学习。以此来与大家共勉。

原文:http://huangbowen.net/blog/2013/03/24/senior-programer-good-habits/

SmartGit忽略文件提交

在需要忽略提交的文件夹中创建.gitignore文件。

首先要强调一点,这个文件的完整文件名就是“.gitignore”,注意最前面有个“.”。这样没有扩展名的文件在Windows下不太好创建,

这里给出win7的创建方法:

创建一个文件,文件名为:“.gitignore.”,注意前后都有一个点。保存之后系统会自动重命名为“.gitignore”。

一般来说每个Git项目中都需要一个“.gitignore”文件,这个文件的作用就是告诉Git哪些文件不需要添加到版本管理中。

实际项目中,很多文件都是不需要版本管理的,比如Python的.pyc文件和一些包含密码的配置文件等等。

这个文件的内容是一些规则,Git会根据这些规则来判断是否将文件添加到版本控制中。

下面我们看看常用的规则:

  • /mtk/ 过滤整个文件夹
  • *.zip 过滤所有.zip文件
  • /mtk/do.c 过滤某个具体文件

很简单吧,被过滤掉的文件就不会出现在你的GitHub库中了,当然本地库中还有,只是push的时候不会上传。

需要注意的是,gitignore还可以指定要将哪些文件添加到版本管理中:

  • !*.zip
  • !/mtk/one.txt

唯一的区别就是规则开头多了一个感叹号,Git会将满足这类规则的文件添加到版本管理中。

为什么要有两种规则呢?

想象一个场景:我们只需要管理/mtk/目录中的one.txt文件,这个目录中的其他文件都不需要管理。那么我们就需要使用:

  • /mtk/
  • !/mtk/one.txt

假设我们只有过滤规则没有添加规则,那么我们就需要把/mtk/目录下除了one.txt以外的所有文件都写出来!

如果需要忽略整个文件夹,.gitignore中写一个*即可

最后需要强调的一点是,如果你不慎在创建.gitignore文件之前就push了项目,那么即使你在.gitignore文件中写入新的过滤规则,这些规则也不会起作用,Git仍然会对所有文件进行版本管理。

简单来说,出现这种问题的原因就是Git已经开始管理这些文件了,所以你无法再通过过滤规则过滤它们。

所以大家一定要养成在项目开始就创建.gitignore文件的习惯,否则一旦push,处理起来会非常麻烦[需要删除该文件再push,然后重新创建该文件,之后.gitignore中的设置才能生效,忽略该文件的提交]。

提高工作效率的工具

  • 查找:这是一类通用问题,可以理解为
  1. 查找文件:Everything,感觉很好用,制定好快捷键后基本不用再打开我的电脑了;
  2. 查找源代码:SourceInsight+Grep, 这两个工具可以直接搞定90%的代码查找任务;
  • 程序编写/查看:
  1. 编辑器:windows下phpStrom,linux当然是vim;
  2. Notepad++作为查看文本是GVIM的良好补充;
  3. 工具箱,推荐GNUWIN,当然windows下的powershell也是很强大的;
  • 熟悉工作环境的快捷键,例如我的环境是windows:
    1. win键+E:打开我的电脑;
    2. win键+R:打开运行窗口;
    3. win键+数字:切换任务栏上对应的程序;
    4. win键+向上箭头:最大化当前窗口(向下最小化窗口);
    5. win键+左箭头:窗口最大化到屏幕左侧(类似可用右箭头);
    6. win键+P:选择演示模式(投影灯);
    7. win键+shift+向左(右):将窗口从一个监视器移到另外一个监视器;
    8. Alt+Tab:切换程序;