IT技术博客大学习 共学习 共进步
首页 / 博学无忧
IT 2015-01-14 13:55:55 / 浏览 3,000

php内核探索之zend_execute的具体执行过程

解释器引擎最终执行op的函数是zend_execute,实际上zend_execute是一个函数指针,在引擎初始化的时候zend_execute默认指向了execute,这个execute定义在{PHPSRC}/Zend/zend_vm_execute.h

IT 2015-01-12 22:52:43 / 浏览 2,840

一次php进程诡异退出的排查过程

最近给XX项目搭建一个反垃圾平台。效果不错,但是出现了一个诡异的事情。离线扫描部分会有一个常驻的php进程,以便处理发现的垃圾信息。常驻的php进程总是诡异的退出。

IT 2015-01-12 22:52:04 / 浏览 3,580

妙用php中的register_shutdown_function和fastcgi_finish_request

在php中又两个方法都是在请求快结束的时候执行。方法名分别是 register_shutdown_function和fastcgi_finish_request。虽然执行的时机差不多,但是功能和应用场景不一样。比较两个方法的区别不是本文的重点。本文的重点的说明两个方法的应用场景。

IT 2015-01-12 22:50:58 / 浏览 3,440

调试利器之tcpdump详解

tcpdump提供了源代码,公开了接口,因此具备很强的可扩展性,对于网络维护和入侵者都是非常有用的工具。tcpdump存在于基本的 FreeBSD系统中,由于它需要将网络接口设置为混杂模式,普通用户不能正常执行,但具备root权限的用户可以直接执行它来获取网络上的信息。因此系统中存在网络分析工具主要不是对本机安全的威胁,而是对网络上的其他计算机的安全存在威胁。

IT 2015-01-12 22:48:51 / 浏览 4,520

ip地址中的网络号,主机号

打个很简单的比喻:网卡的MAC地址就像你身份证上的身份证号码,虽然是唯一的,但是寻址起来很麻烦;而IP地址就像你的家庭详细地址,楼上说的对:每个IP地址都是由两部分构成:网络号,主机号.其中,网络号标识某个网络,主机号标识在该网络上的一个特定的主机。这样就形成了一定的格式,正如地址写的是什么省,什么市,什么镇一样有层次感。这样通通信起来很容易定位。

IT 2015-01-04 22:59:03 / 浏览 5,560

php调试利器之phpdbg

PHPDBG是一个PHP的SAPI模块,可以在不用修改代码和不影响性能的情况下控制PHP的运行环境。 PHPDBG的目标是成为一个轻量级、强大、易用的PHP调试平台。可以在PHP5.4和之上版本中使用。在php5.6和之上版本将内部集成。

IT 2014-12-08 23:23:54 / 浏览 3,520

使用valgrind的callgrind工具进行多线程性能分析

valgrind是开源的性能分析利器。 根据它的文档,可以用它来检查内存泄漏等问题,还可以用来生成函数的调用图,就这两个功能就足够有吸引力了。本文主要是介绍如何使用valgrind的callgrind工具进行性能分析。

IT 2014-12-03 00:02:03 / 浏览 2,180

/var/spool/clientmqueue目录文件清理

今天对服务器磁盘占用情况进行检查时发现有台服务器的/var 目录已经占用90%。需要清理。 使用 sudo du -m –max-depth=2 /var/ 命令查看/var/目录的磁盘占用情况。命令在检查 /var/spool/clientmqueue 时出现了卡死的情况。 可以肯定 /var/spool/clientmqueue 这个目录文件很多了,必须清理了。 如果单纯的用rm 命令删除时,会报“-bash: /bin/rm: Argument list too long”的错误。意思是参数太长,无法直接用rm干掉。

IT 2014-12-01 23:25:43 / 浏览 4,560

一个echo引起的进程崩溃

最近在编写后台程序时遇到一个问题。发现后台程序总是莫名其妙的die掉。经排查,发现罪魁祸首是一个echo。

IT 2014-12-01 23:21:26 / 浏览 1,260

【IPC通信】基于管道的popen和pclose函数

标准I/O函数库提供了popen函数,它启动另外一个进程去执行一个shell命令行。 这里我们称调用popen的进程为父进程,由popen启动的进程称为子进程。 popen函数还创建一个管道用于父子进程间通信。父进程要么从管道读信息,要么向管道写信息,至于是读还是写取决于父进程调用popen时传递的参数。

IT 2014-12-01 23:21:00 / 浏览 1,940

linux中c语言errno的使用

在linux中使用c语言编程时,errno是个很有用的动动。他可以把最后一次调用c的方法的错误代码保留。但是如果最后一次成功的调用c的方法,errno不会改变。因此,只有在c语言函数返回值异常时,再检测errno。

IT 2014-12-01 23:20:26 / 浏览 1,560

php中assert方法的安全问题

php中assert本来是用于调试的,如果assert方法内的代码不为true,则给个Warning提醒。如下面的代码。。。

IT 2014-11-28 23:06:17 / 浏览 4,400

使用nginx限制蜘蛛的频繁抓取

上周被百度蜘蛛给盯上了,百度蜘蛛抓取频率增加了5倍。百度蜘蛛抓取量骤增,导致服务器负载很高。最终用nginx的ngx_http_limit_req_module模块限制了百度蜘蛛的抓取频率。每分钟允许百度蜘蛛抓取200次,多余的抓取请求返回503。

IT 2014-11-27 13:01:44 / 浏览 2,840

一次DNS域名解析问题排查记录

项目中通过http的方式调用了其他引擎的数据。昨天同事反应,调用数据出现问题。这让我想起了之前安装的vipserver。vipserver是阿里自己开发的一个dns域名解析软件。查看了vipserver的日志,发现它的确把域名解析到了很多实体机ip上。为什么解析到实体机ip后就不能正常调用服务了呢?和对方pe沟通后得知,实体机监听的是2087端口,而vip监听的是2088端口。因此,在向实体机的2088端口发起连接请求时失败。

IT 2014-11-25 23:13:16 / 浏览 2,220

core dump磁盘报警问题排查过程

一台线上机器开始磁盘报警,分区磁盘容量已经占用超过80%,而同一批上线的几台机器都没报警,而且离报警阀值还差很远。大概的排查步骤如下:首先,查找导致磁盘报警的大文件,发现是core dump文件过多导致的。。。。

IT 2014-11-21 23:46:50 / 浏览 1,760

linux shell中”2>&1″含义

2>&1 标准错误拷贝了标准输出的行为,但此时标准输出还是在终端。>file 后输出才被重定向到file,但标准错误仍然保持在终端。

IT 2014-05-14 23:56:04 / 浏览 2,140

动态修改php的配置项

我们一般修改php的配置项都是在php.ini中修改。在php,ini中的修改会影响到所有使用php的程序。假如我想让修改只在某个域名下生效,该如何做呢?

IT 2014-04-15 22:41:31 / 浏览 2,620

当cpu飙升时,找出php中可能有问题的代码行

当你发现一个平时占用cpu比较少的进程突然间占用cpu接近100%时,你如何找到导致cpu飙升的原因?我的思路是,首先找到进程正在执行的代码行,从而确定可能有问题的代码段。然后,再仔细分析有问题的代码段,从而找出原因。 如果你的程序使用的是c、c++编写,那么你可以很容易的找到正在执行的代码行。但是,程序是php编写的,如何找到可能有问题的代码行呢?这个问题就是本文要解决的问题。