phpor

2月 092022
 

缘起:

一个PHP进程本来看不到使用任何的多线程方法,但是,strace时却发现大量的clone调用,而且,ps时,还发现进程状态是Sl 的,随不解,gdb 探查之,发现如下堆栈:

为什么一个简单的域名解析还需要劳驾线程呢?

寻找参考资料:

多线程中使用curl致coredump问题 – 云+社区 – 腾讯云 (tencent.com)

 

对于多线程的环境,libcurl如果使用 SIGALARM 来实现dns的查询超时控制的话,会有问题,所以,会考虑使用线程的方式来实现。

但是,对于PHP这种单线程环境来讲,使用SIGALARM 也没有问题。

libcurl编译时使用 –enable-ares 来避免使用线程做域名解析

 

 Posted by at 下午 3:48
7月 212021
 

 

 

 Posted by at 下午 12:49
6月 292021
 

 

测试实例:

 

 Posted by at 下午 6:07
6月 042021
 

如果让服务本身支持定时关闭,理论上非常可行,但是所有想定时关闭的服务都去实现以下这个逻辑是不是不太好?对于一个已经很成熟的(甚至没有源码的)服务想实现这个功能又该怎么办呢?

根据Linux的思想,一个程序应该只做一件事,并非功能越多越好,把自己该做的事做好就行了。

Linux上有一个非常好的命令: timeout 。只做了一件事,可以实现一个程序在一段时间后结束,如:

 

sleep 想睡10s; 但是timeout 保证让他2s就死掉

 Posted by at 上午 10:39