Perlに関する質問です。
バックグラウンドでプロセスを動かしておいてデータを取得し(ログファイルを読み続けデータをハッシュに格納、等)、必要に応じて別のプロセスからデータを読み込むことは可能でしょうか(各種レポート作成のコマンドを作るイメージ)。
できればデータをDBに格納、中間ファイル生成等は行わずプロセス間で直接データをやりとりしたいと思っております。
またもし中間物が必要な場合でも、なるべく書き込みアクセスを減らしたいです。
よろしくお願いします。
データをやり取りするふたつのプロセスは、両方とも Perl なのでしょうか?
OS が何だ、とか、をあまり考えたくないのであれば、Socket で通信しちゃうのが、てっとり早いと思います。
http://perldoc.jp/docs/perl/5.8.8/perlipc.pod#Internet32TCP32Clients32and32Servers
「バックグラウンドでプロセスを動かしておいて...」の方が Server になって、
「必要に応じて別のプロセスから...」の方が Client になります。
ハッシュなどの構造を持ったデータをやり取りするためには、「シリアライズ」という、もう一手間を加える必要があります。
http://perldoc.jp/docs/modules/Storable-2.05/Storable.pod
http://perldoc.jp/docs/modules/Thread-Serialize-0.07/Serialize.pod
OSが何か分からないので、WindowsとLinuxに場合分けして回答します。
相手のプロセスがDDEやOLEをサポートしていれば、それを利用できます。
相手のプロセスがメッセージキューやソケットをサポートしていれば、それを利用できます。
受け渡しデータをDBに格納するということでしたら、単に両方のプロセスでDBを共有すれば良いだけです。
データをやり取りするふたつのプロセスは、両方とも Perl なのでしょうか?
OS が何だ、とか、をあまり考えたくないのであれば、Socket で通信しちゃうのが、てっとり早いと思います。
http://perldoc.jp/docs/perl/5.8.8/perlipc.pod#Internet32TCP32Clients32and32Servers
「バックグラウンドでプロセスを動かしておいて...」の方が Server になって、
「必要に応じて別のプロセスから...」の方が Client になります。
ハッシュなどの構造を持ったデータをやり取りするためには、「シリアライズ」という、もう一手間を加える必要があります。
http://perldoc.jp/docs/modules/Storable-2.05/Storable.pod
http://perldoc.jp/docs/modules/Thread-Serialize-0.07/Serialize.pod
コメント(1件)
追記になりますが、プロセスは両側ともPerlで、OSはLinuxを想定しています。