2011-08-10 7 views
1

WebSocketサーバのセットアップがあり、PHP(CodeIgniterは正確には問題ありませんが...)で動作しています。私がしたいのは、できるだけCRONジョブを使わないでn秒ごとにサーバが「クリーンアップ」機能を実行させることです。基本的には、すでに稼働しているWebSocketサーバーの機能が、x時間内に何もしなかったユーザーをチェックし、ソケットを閉じて自動的に "キック"するようにしたいのです。私はすべてWeb上で見てきたものから、サーバアクションの実行WebSocketでのユーザ入力

ユーザ入力が受信されると、サーバーのアクションを実行する唯一の方法は...自動的にサーバ機能を実行する方法はありませんです...

アイデア?

ありがとうございます!

+0

"サーバは" n " CRONの仕事の使用 "...私は釘を運転したいと言っているようなものですが、私はハンマーを使用したくない... – jondavidjohn

+0

@jondavidjohn、どのように? – Brad

+0

@Bradこのタスクのツールは明白で利用可能ですが、なぜそれを使用しないのですか? – jondavidjohn

答えて

1

おそらく、これを行う最良の方法はデーモンを実装することです。ここで

はあなたが始めるためのチュートリアルと偉大なクラスです:http://kevin.vanzonneveld.net/techblog/article/create_daemons_in_php/

私は同様のタスクを行う、いくつかのデーモンにこのクラスを使用します。彼らは何週間も走り、私は何の問題もない。あなたはあなたのメモリ使用量に注意する必要があります。たとえば、ガベージコレクタによって決して殺されないような匿名関数がないことを確認してください。

0

私はあなたの "ソケットサーバ"について何も知らないが、javaで書かれたサーバのように聞こえるか、それとも似ているかのように聞こえる。あなたは自分で書いたか、少なくともソースを持っていると思うだろう。あなたができることは、次のようなものを実行するスレッドを開始することです(これはPHPで書かれていますので、私は非常によくjavaを知らないため)

+0

サーバはPHPで書かれており、while(真)ループと非常によく似ていますが、変更されたソケット(新しいデータの送信、新しい接続、切断など)を処理します。私がしたいことは、サーバーに「ping」が送信されないので、何も入ってこない間にサーバーが機能を実行するようにすることです。それは意味をなさない? – SocketN00b

+0

なぜPHPでサーバーを書いていますか?あなたが言ったことを理解していれば、おそらくこのようなトラフィックが検出されなかったときに関数を実行したいと考えています: while(true){ while(check_for_connections()){ functions(); } } –

関連する問題