记一次跟踪php进程的代码问题

记一次追踪php进程bug

现象:
项目中bin/invite_email.php这个后台运行的进程,每10分钟重启一次来保证后台进程可以有机会执行到更新后的代码.但是下午发现 invite_email.php这个进程的启动时间是上午的9:20分.以致lpush到redis后,这个进程应该lpop一直没有执行.

跟踪:
pid: 22978,

<code>[root@ Dianji_Web_12 /proc/22978]# strace -p 22978
Process 22978 attached - interrupt to quit
clock_gettime(CLOCK_MONOTONIC, {25088659, 736169268}) = 0
poll([{fd=8, events=POLLIN|POLLPRI}], 1, 836) = 0 (Timeout)
poll([{fd=8, events=POLLIN|POLLPRI}], 1, 0) = 0 (Timeout)
clock_gettime(CLOCK_MONOTONIC, {25088660, 572234268}) = 0
clock_gettime(CLOCK_MONOTONIC, {25088660, 572302268}) = 0
clock_gettime(CLOCK_MONOTONIC, {25088660, 572461268}) = 0
poll([{fd=8, events=POLLIN|POLLPRI}], 1, 1000) = 0 (Timeout)
poll([{fd=8, events=POLLIN|POLLPRI}], 1, 0) = 0 (Timeout)
clock_gettime(CLOCK_MONOTONIC, {25088661, 572976268}) = 0
clock_gettime(CLOCK_MONOTONIC, {25088661, 573026268}) = 0
clock_gettime(CLOCK_MONOTONIC, {25088661, 573073268}) = 0
poll([{fd=8, events=POLLIN|POLLPRI}], 1, 1000 &lt;unfinished ...&gt;
</code>

一直是poll状态,文件描述符是8

<code>[root@ Dianji_Web_12 /proc/22978]# ll /proc/22978/fd/
总计 0
lr-x------ 1 root root 64 02-24 16:08 0 -&gt; /dev/null
l-wx------ 1 root root 64 02-24 16:08 1 -&gt; /tmp/invite_mail_xnw.log
l-wx------ 1 root root 64 02-24 16:08 2 -&gt; /tmp/invite_mail_xnw.log
lrwx------ 1 root root 64 02-24 16:08 3 -&gt; socket:[1167074663]
lrwx------ 1 root root 64 02-24 16:08 4 -&gt; socket:[1167074664]
lrwx------ 1 root root 64 02-24 16:08 5 -&gt; socket:[1167074665]
lrwx------ 1 root root 64 02-24 16:08 6 -&gt; socket:[1167075855]
lrwx------ 1 root root 64 02-24 16:08 7 -&gt; socket:[1167075856]
lrwx------ 1 root root 64 02-24 16:08 8 -&gt; socket:[1167085181]
</code>

上面的结果知道他是一个socket

<code>[root@ Dianji_Web_12 /proc/22978]# lsof -p 22978
...........此处省略n行..
php     22978 root    2w   REG        8,3   873908    3808044 /tmp/invite_mail_xnw.log
php     22978 root    3u  IPv4 1167074663                 TCP localhost:35653-&gt;localhost:entextxid (ESTABLISHED)
php     22978 root    4u  IPv4 1167074664                 TCP localhost:45819-&gt;push.lava.cn:6381 (CLOSE_WAIT)
php     22978 root    5u  IPv4 1167074665                 TCP localhost:45820-&gt;push.lava.cn:6381 (CLOSE_WAIT)
php     22978 root    6u  sock        0,5          1167075855 can't identify protocol
php     22978 root    7u  IPv4 1167075856                 TCP localhost:44916-&gt;localhost:13001 (ESTABLISHED)
php     22978 root    8u  IPv4 1167085181                 TCP 117.79.236.12:35050-&gt;211.153.75.9:http (ESTABLISHED)
</code>

看lsof的最后一行是文件描述符8所打开的socket,是连接到211.153.75.9的80端口,但是一直处 于读取数据状态.也就是说211.153.75.9这个http server没有返回数据.有了这条线,就好办了.这个陌生的ip肯定是通过域名解析得到的.仔细排查,发现是curl到api.eduyun.cn导致 的.检查curl这段代码.原来是忘加超时时间了..

<code>    curl_setopt($ch, CURLOPT_TIMEOUT, 4); 
</code>

引以为诫..

吵架

最近两天总是吵架不断。。屁大点事。。咣咣咣来一架。。 这不。今天老婆让我陪她出去溜弯。由于下午出去跟几个朋友玩了会。有点活没有干完。。就跟她说。活还没有干完。不能去。然后机关枪就把向我扫射过来。‘你能跟别人出去玩。不能陪我出去溜弯?balabalabala此处省略一万个字。’吵起来了。。她把手机也摔了。。如果我辞职了。就没有这么多烦恼了。。老婆。你说你是要钱呢。还是要我的时间呢?反正我现在觉得活得人不像人鬼不像鬼。完全没有自己的时间。。本来还想不理她算了。。自己生闷气吧。。但是人家小姑娘自己一个人身在异乡。。因为认识我才来到这个地方。。算了。再哄哄吧。。谁让人家是咱老婆来着。。

误解

今天是2月14号.情人节。老婆肚子疼。有可能快生了。。我就问了问她家里的钱放哪里了。。。结果她就误认为我是想把钱要走。。不给她花。。。。。我就是问问家里的钱在哪里放着。。去医院的时候带着。如果不能刷卡。拿现金应急用。。。。波哥跟王姐混了四年。自认为也不是那扣人。对钱也是大大咧咧。。在我的金钱观中。。钱就是个狗屁。。。没了还能挣。。真是误解我了呀。。王姐太敏感了。。。王姐。除了波哥。你跟了谁都不能过。。