- ベストアンサー
PerlとPHPで同一ファイルをファイルロック
PerlとPHPで同一のファイルを読み書きする必要があるのですが、ファイルロックする機構を作るには互いの言語でmkdirで対応したほうがよいのでしょうか? flock関数がPerlにもPHPにもありますが、これは、PHPのプロセスで実行したロックの状態をPerlで検知したり、または逆のことはできないのでしょうか? もしできないとするとmkdirで同一の機構を作ったほうが良い気もしますが、何か問題などは起きないでしょうか。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
flockが妥当だと思います。 mkdir方式にしてもsymlink方式にしてもどちらもflock程強固なファイルロックではありません。またflockはシステムコールなのでperlからでもphpからでも言語にかかわらず同じシステムコールをコールしているのでどちらでも関係なくロックできます。
その他の回答 (1)
- kumacchi7
- ベストアンサー率100% (1/1)
>>ところで、自分が借りているレンタルサーバーのPerlがflockに対応しているか調べる方法はありますか?flockは対応していないサーバーが多いと聞きました(サーバーはWebArenaのSuite2なのですが)。 WebArenaのSuite2Unix系のOSのLinuxを採用していますのでflockは使えるはずです。といいますか、flockが利用できないサーバーはありえないです。まず99.9%使えます。使えなかったら逆に驚きです。 一般的にいえばflockが使えなかったのはWindows Me以前のWindows OS位だと思います。Windows Me以前のOSが一般的だった頃は動作確認や自宅サーバーをWindows系OSで行う場合にflockが使えないのでmkdir等のlock機構を搭載するのが一般的でしたが、一般的にNT系のOS(2000やXP)が利用されている現在ではflockが利用できるのでmkdir等のlock機構はあまり意味がなくなっています。 昔は、ロック無し、mkdir、symlink、flockとロック機能を選べるようにcgiを組むものでしたが現在では基本的にflock一本で問題ないと思います。 実際に試したい場合は、実際に簡単なプログラムを使って試すといいと思います。flockしてflockに成功したかどうかを表示して30秒スリープするようなプログラムを1個作って、同時に幾つも起動してみるといいと思います。 対応状況などはWebArenaのSuite2をご利用であればそれなりのレンタル料金をお支払いだと思いますのでWebArenaのSuite2に聞くのが一番の早道だと思います。逆にサポートが貧弱であれば金額に見合わないということになると思います。
お礼
再度の詳しいご回答ありがとうございます。たいへん参考になりました。 私がWebでいろいろflockに関して調べていましたが、flockの記事などを書いているサイトはもうずいぶん前に書かれたものが多かったようです。 >対応状況などはWebArenaのSuite2をご利用であればそれなりのレンタル料金をお支払いだと思いますのでWebArenaのSuite2に聞くのが一番の早道だと思います。 そうですね。サポートの件に関してはこちらではなくサーバー会社に聞くようにします。ご指摘ありがとうございました。
お礼
ありがとうございます!意外なお答えでびっくりしました。 ところで、自分が借りているレンタルサーバーのPerlがflockに対応しているか調べる方法はありますか?flockは対応していないサーバーが多いと聞きました(サーバーはWebArenaのSuite2なのですが)。