PreFork

あらかじめ複数のプロセスを起動して接続を待ち受けるネットワークサーバプログラムを簡単に作れるようにするためのライブラリです。

以前は TServer という名前でした。

ダウンロード

必要なもの

ライセンス

このプログラムは Ruby ライセンスに従います。

機能

使用例

以下はポート8888で起動し、クライアントに現在時刻を返すプログラムです。

require "prefork"
pf = PreFork.new(8888)
pf.start do |s|
  s.puts Time.now
end

クラスメソッド

PreFork.new(port)
ポートport で accept する PreFork オブジェクトを返します。
PreFork.new(IPaddr, port)
IPアドレス IPaddr のポート port で accept する PreFork オブジェクトを返します。
PreFork.new(socket, ...)
ソケット socket で accept する PreFork オブジェクトを返します。socket は複数指定可能です。

インスタンスメソッド

PreFork#start {|s| ...}
accept を開始します。クライアントから接続された場合はブロックが実行されます。 ブロック引数は通信用ソケット(accept の戻り値)です。
PreFork#stop
ループを抜け出し、start から復帰します。
PreFork#close
PreFork.new で開いたソケットを閉じます。
PreFork#sock
ソケットを返します。複数のソケットで動作している場合は最初のものを返します。
PreFork#socks
ソケットの配列を返します。
PreFork#min_servers, PreFork#min_servers=n
最小サーバプロセス数を返し/設定します。 サーバプロセス数がこの値以下になった場合は、この値までプロセスを起動します。
PreFork#max_servers, PreFork#max_servers=n
最大サーバプロセス数を返し/設定します。 サーバプロセス数はこの値以上には起動しません。
PreFork#max_request_per_child, PreFork#max_request_per_child=n
PreFork#max_use, PreFork#max_use=n
1プロセスあたりの最大接続数を返し/設定します。 この回数分の接続を処理したプロセスは終了します。 0 に設定すると終了しません。
PreFork#max_idle, PreFork#max_idle=n
一度でも接続を処理した子プロセスは、接続待ち時間がこの値を超えると終了します。
PreFork#on_child_start{...}, PreFork#on_child_start=proc
子プロセス生成時にブロックまたは proc を実行します。 proc は Proc クラスのインスタンスです。
PreFork#on_child_exit{...}, PreFork#on_child_exit=proc
子プロセス終了時にブロックまたは proc を実行します。 proc は Proc クラスのインスタンスです。
PreFork#terminate
子プロセスを終了させます。接続中の子プロセスは接続が切れるまで終了しません。
PreFork#interrupt
子プロセスを終了させます。接続中の子プロセスも強制的に終了させます。
PreFork#logging=flag
flagが偽(false, nil)の場合はログを出力しません。 flagが :syslog の場合で、Syslog.opened? が真の場合に、info レベルで syslog にログを出力します。 それ以外の場合は、ログを標準エラー出力に出力します。 デフォルトは false です。

履歴

0.3.2a 2005/01/17
0.3.2 2005/01/06
0.3.1 2004/11/02
0.3 2004/09/11
0.2.1 2004/05/20
0.2 2004/03/21
0.1.2 2004/05/18
0.1.1 2004/03/02
0.1 2004/02/25
0.0.8 2003/06/17
0.0.7 2003/04/27
0.0.6 2003/04/17
0.0.5 2002/12/03
0.0.4 2002/12/01
0.0.3 2002/11/20
0.0.2 2002/11/12
0.0.1 2002/11/11

とみたまさひろ

Last modified: Thu Jan 6 08:19:49 JST 2005