[PHP-users 15939] Re: Is it possible that similar coding use signal() and alarm() on C ?

Youichi Iwakiri yiwakiri @ st.rim.or.jp
2003年 6月 13日 (金) 20:42:24 JST


いわきりです。

Youichi Iwakiri wrote in <200306131130.UAA23447 @ mail5.rim.or.jp> :
>下記がスクリプトの一部です。
すみません。間違ってました。

>function sig_handler($signo) {
>    switch($signo) {
>        case SIGALRM:
>            cleanup();
>            exit;
>        default:
>            break;
>    }
>}
>
>pcntl_signal(SIGALRM, "sig_handler");
>
>function bogus_alarm($t = false) {
>    static $s_time;
>
>    if ($n)
>	$s_time = time();
>    $now = time();
>    if ($now - $s_time > 5)
>        posix_kill(posix_getpid(), SIGALRM);
>}
>
>register_tick_function("bogus_alarm");
>
>// socketのオープン等の処理
>
>$close_connection = false;
>
>declare(ticks = 1) {
>    $is_read = false;
>    socket_set_nonblock($sock);
>    bogus_alarm(5);
>    while(!$is_read) {
>        $msg = socket_read($sock, 1024);
>	if (strlen($msg) > 0) {
>            $is_read = true;
>        } else if (socket_last_error($sock) != 11) {
>            $is_read = true;	
>            $close_connection = true;
>        }
>    }
>    pcntl_signal(SIGALRM, SIG_IGN); // SIGALRMを無視
>    // 続きの処理
>}

-- 
Youichi Iwakiri



PHP-users メーリングリストの案内