PHP7源码分析之CG和EG

 

在阅读PHP源码的时候,会遇到很多宏。如果不了解这些宏的含义,对代码理解会带来很多困扰。现在我们就一起来看看CG和EG两个宏的含义。 CG 含义 CG的含义是 compiler_globals。Zend编译器相关的全局变量。 作用 大家都知道PHP代码最终是转化为Opcode去执行的。在PHP转换为Opcode过程中需要保存一些信息。这些信息就保存 ...

Btrace示例和资料整理

 

Btrace示例 在这个示例中,我们将实现Btrace脚本跟踪一个成员变量的变化。 被跟踪类的代码如下: package com.bo56; class Demo { private static int counter; public void add(){ try { counter++; System.out.println("bo56.com " + counter); ...

我的技术十年

 

写在前面 转眼间,从2006年毕业,到现在已经整整十年。在这十年里,从创业公司到进入阿里巴巴,从小菜鸟到十年老鸟。上了年纪的人,总爱回忆。 另外,总一些同学在微信问我,如何成为月薪x万的专家。前一段时间受邀,去51CTO做了一次《程序员成长之路》的分享。可以看出,好多同学都有成长方面的困惑。希望通过我的经历 ...

如何设置Java的默认版本

 

Mac下Java的版本是1.7。 java -version java version "1.7.0_71" Java(TM) SE Runtime Environment (build 1.7.0_71-b14) Java HotSpot(TM) 64-Bit Server VM (build 24.71-b01, mixed mode) 安装了1.8版本后,执行Java -version命令依然显示的是1.7版本信息。如何切换到1.8版本呢?只要执行如下几个命令即 ...

深入了解xhprof性能分析工具

 

前言 这篇文章不是教你如何安装使用xhprof进行性能分析。如果想了解如何安装使用xhprof,网络上文章很多,你也可以看我之前写的两篇文章。 非侵入式监控PHP应用性能监控分析 xhprof gui,让xhprof界面更漂亮,功能更强大 这篇文章主要介绍使用xhprof时的一些常见问题,和xhprof是如何实现性能分析的。 常见问题 多次调 ...

Java常用分析工具之jmap

 

简介 jmap是JDK中提供的一个用来监视进程运行中的jvm物理内存的占用情况的工具。该进程内存内,所有对象的情况,例如产生了哪些对象,对象数量。当系统崩溃时,jmap 可以从core文件或进程中获得内存的具体匹配情况,包括Heap size, Perm size等。 使用jmap会影响线上运行的应用,所以尽量不要在线上执行此命令 ...

使用LVS,关闭网卡LRO/GRO功能

 

现在大多数网卡都具有LRO/GRO功能。即,网卡收包时将同一流的小包合并成大包 (tcpdump抓包可以看到>MTU 1500bytes的数据包)交给内核协议栈。LVS内核模块在处理>MTU的数据包时,会丢弃。 因此,如果我们用LVS来传输大文件,很容易出现丢包,传输速度慢。 解决方法,关闭LRO/GRO功能,命令: $ethtool -k eth0 #查看 ...

在2016的phpcon大会上的分享PPT下载

 

这是在2016年,在phpcon大会上分享的PPT。感谢 锅巴和板子,组织这么好的活动。虽然,大会第一天下起了雨,但是人还是爆满。居然还有来自日本的同学。倍感意外。 以下是PPT几张关键的PPT截图和PPT下载地址: PHP问题排查实践 解决问题的思路 gearman导致cpu100问题解决方法 案例详细分析:《php进程导致服务器cpu ...

解决crond脚本执行并发冲突问题

 

问题 在crond配置脚本执行后,经常会出现重复执行的情况。如下面的脚本: <?php sleep(70); ?> 如果,在crond中的配置项如下: */1 * * * * root php ./test.php 就出出现,之前执行的test.php还未结束,新的test.php又被执行。如下: [hailong@vhost ~]$ ps aux | grep tt.php 56667 5280 0.0 0.0 10 ...

crond中使用flock命令的坑

 

现象 需要定期去执行一个PHP脚本,首先想到的是通过crond命令来实现这个功能。但是,在crond的执行过程中发现一个诡异的事情。在crond中的配置如下。 */1 * * * * root /usr/bin/flock -xn /tmp/test.lock -c '/usr/bin/php /home/hailong/test.php > /tmp/test.tt 2>&1' 脚本只会在第一次成功执行,之后就 ...