2012-05-06 13 views
0

私はサーバに接続されたクライアントの配列を持つPHPサーバを持っています。 は、各クライアントがどのくらいの時間接続されているかを知る手段です。それを切断する? PHPはソケットが受け入れられた時間をどこかに保存しますか?私はゴーストクライアントを取り除くためにしようとしている ..php socket timeout

iはsocket_get_connection_timeのいくつかの種類()似たような機能がある場合、私はソケットが自分自身を受け入れ、ループにそれが、私の質問を投げる時間を設定することができることを知っています?

答えて

0

これを処理する方法の1つは、Unixベースのプラットフォームを使用している場合(私はこれがWindowsで利用できるとは思わない)、信号を使用することです。

まず、PHPビルドにpcntl_ *関数が含まれていることを確認する必要があります。多くのインストールでは、デフォルトではコンパイルされません。

if(!function_exists("pcntl_signal")) { 
    die("pcntl_* functions not available"); 
} 

pcntl_signal(14, "cleanup", TRUE); // 14 is the value for the SIGALARM unix signal 
pcntl_alarm(XXXX); // where XXXX is the number of second timeout for doing maintenance 

function cleanup() 
{ 
    // do your checks for timed out sockets here. 
    // you will need some way to access the data, possibly a global variable pointing to 
    // to the list of socket connections. 
} 

あなたはこのような何かをするだろう