PHP超时处理全面总结(6)

发表于:2013-10-28来源:酷勤网作者:不详点击数: 标签:php
[CC++中超时实现] 一般在 Linux C/C++中,可以使用:alarm()设置定时器的方式实现秒级超时,或者:select()、poll()、epoll()之类的异步复用IO实现毫秒级超时。也

  [C&C++中超时实现]

  一般在LinuxC/C++中,可以使用:alarm()设置定时器的方式实现秒级超时,或者:select()、poll()、epoll()之类的异步复用IO实现毫秒级超时。也可以使用二次封装的异步io库(libevent,libev)也能实现。

  一、使用alarm中用信号实现超时 (秒级超时)

  说明:Linux内核connect超时通常为75秒,我们可以设置更小的时间如10秒来提前从connect中返回。这里用使用信号处理机制,调用alarm,超时后产生SIGALRM信号(也可使用select实现)

  用alarym秒级实现 connect设置超时代码示例:

//信号处理函数

staticvoidconnect_alarm(intsigno)

{

debug_printf("SignalHandler");

return;

}

//alarm超时连接实现

staticvoidconn_alarm()

{

  Sigfunc*sigfunc;//现有信号处理函数

  sigfunc=signal(SIGALRM,connect_alarm);//建立信号处理函数connect_alarm,(如果有)保存现有的信号处理函数

inttimeout=5;

//设置闹钟

  if(alarm(timeout)!=0){

  //...闹钟已经设置处理

  }

//进行连接操作

if(connect(m_Socket,(structsockaddr*)&addr,sizeof(addr))<0){

if(errno==EINTR){//如果错误号设置为EINTR,说明超时中断了

debug_printf("Timeout");

&nbs

原文转自:http://www.kuqin.com/web/20120808/324135.html