• ベストアンサー

Windowsサーバーでflockはできるのでしょうか?

Windowsサーバーでflockはできるのでしょうか? 言語はPerlもしくはPHPで考えております。 確かWindowsサーバーはflockは利用できなかったと記憶しております。 しかしファイル同時書き込みの排他制御は必ず実装しなければなりません。 代替方法としてファイルをリネームして・・というやり方もあるようですが それしか方法はないのでしょうか? データベースは使用する予定はありません。

  • Perl
  • 回答数1
  • ありがとう数4

質問者が選んだベストアンサー

  • ベストアンサー
  • Gotthold
  • ベストアンサー率47% (396/832)
回答No.1

flockが使えないのはWindows 9x系で、 NT系なら大丈夫だと思います。 flockを使うにしても使わないにしても 正しく使わないとデータを飛ばしたりするので気をつけてください。 [参考] http://jn.swee.to/cano/lock/index.shtml

begin96
質問者

お礼

ありがとうございます。 NT系なら大丈夫なのですね。

関連するQ&A

  • flockについて

    http://www.freespace.jp/phpstudy.php4 のサイト様を拝見したり、フリーで配布されているスクリプトを見ると、書き込むファイルに対して、 $fp = fopen('bbs.log', 'r+'); flock($fp, LOCK_EX); … とやっていると思うのですが、perl記述のcgiで掲示板を作成したときは、書き込むファイルとは別にロック用のファイルを用意し、(perl記述です) open(LOCK,"+<$lockfile"); flock(LOCK,2); open(IN,"$logfile"); .... close(IN,"$logfile"); open(OUT,"$logfile"); .... close(OUT,">$logfile"); としていました。(書き込むファイルが2つあったのでこのような方法をとってました) そこでphpでも同じ方法は使えるのでしょうか? $fp = fopen('bbs.log', 'r+'); flock($fp, LOCK_EX); … の方法を使おうと思っていたのですが、最初にログファイルを読み込むとき、 file("bbs.log"); という風にしているので、flockに記述すべきファイルハンドルが見当たりません。仮に取得できたとしても、file();の仕様からして内部にcloseが入ってそうなので、flockできたとしてもcloseで無効になってしまわないかが心配です。なのでこの場合はやはり別にログファイルを用意しないとできないということでしょうか。

    • ベストアンサー
    • PHP
  • Windows2000serverとWindowsXPでのFlock関数の使い方について

    教えてください。 PerlでCGIのファイルロックをするのに、Flock関数というのがあります。 多くの書籍を読むとFlock関数はUNIX系のサーバでなければ使えないと記述されています。 会社のサーバは「Windows2000server」を使用していますが、Flock関数は使えないのでしょうか? ちなみに自宅では「WindowsXP Pro」を使用して実験していますが、XPでもやはり、Flock関数は使えないのでしょうか? どなたか、ご指導のほど、宜しくお願いいたします。

  • flockのタイミング

    掲示板のスクリプトを作っています。 ログは1行ごとに1記事分のデータが格納されているので、書き込み処理の場合は、 $lines = file("./log.dat"); としていったん配列にログを読み込み、 array_unshift($lines, $new_data); 等して、新しい記事のデータを配列の先頭に追加し、 $fp = fopen("./log.dat", "wb"); foreach ($lines as $line) { fputs($fp, $_); } fclose($fp); として、最終的にログに書き込みます。 Perlを扱っているときは(複数更新すべきログファイルがあったので)、別途ロックファイルを作ってそれに対してflockをかけるという方法を行っていましたが、今回はログファイルが1つであるのでそのログファイル自体にflockをかけようと思っています。 しかし、fileで最初にopenしているため、ファイルポインタが取得できず、flockをかけるタイミングは、本当の書き込み作業の部分(fopen)からかけるしかなさそうなのですが、これは危険ではないでしょうか? それと、マニュアルに、 注意: flock()は、ファイルポインタを必要とするため、 (fopen()へ引数"w"または"w+"を指定して)書き込 みモードでオープンすることにより丸めるファイルにアクセス保護する 特別なロックファイルを使用する必要があるかもしれません。 とかいてありますが、この意味がいまいちわからず、困惑しています。

    • ベストアンサー
    • PHP
  • windowsサーバでファイルに書き込みできない

    こんにちわ 先日サーバの移転でアイル(windows)に移項しました。 使用していたphpスクリプトでファイルに書き込む部分がなぜか動作せず、ログファイルの保存が出来なくなってしまいました。 $log ="log.csv"; $reg_com = $_POST['name'].",".$_POST['union']; $fp = fopen($log, "a"); flock($fp, LOCK_EX); fputs($fp, "$reg_com\n"); flock($fp, LOCK_UN); fclose($fp); Linuxサーバの再は上記で問題なくファイルに書き込みされていたのですが、なぜ動作しないのでしょうか? スクリプトの動作は、postされた内容をプログラムファイルと同じ階層のlog.csvに追記していくものになります。 問題点のご指摘をお願いします。

    • 締切済み
    • PHP
  • Windowsサーバー、PHPでアクセス権変更は?

    Windows Server 2003上でPHPでプログラミングしています。 ASPが大部分ですが、部分的に関数やライブラリがあるPHPで実装しています。 PHPでサーバー上の画像をexif解析しようとしたら、アクセス拒否されて 「Unable to open」とエラーが出ました。 画像データのプロパティのセキュリティにある 「Users」にフルコントロールのチェックを入れたらエラーになりませんでした。 そのチェックを、PHPのプログラム内で実行する方法はありますか? アクセス権を変更する下記の関数は、Linux用なので使えませんでした。 chmod("test.jpg",0666); 代替はありますか? 宜しくお願い致します。

  • レンタルサーバー

    お手頃価格でPERL,PHP 及びデーターベースが使えるお薦めのレンタルサーバーを教えて下さい。 宜しくお願いします。

  • Windowsサーバで使用可能なCGI

    こんにちは。 Windowサーバで使用可能な、フリーのメールフォームのCGIを探しております。 お問い合わせメール用のフリーのCGIをいくつか試したのですが、 どれもエラーが表示され、うまく動作しません。 契約しているプロバイダのコールセンターに問い合わせたのですが、フリーのCGIに関してはサポート対象外との事で何もわかりませんでした。(当たり前と言えば当たり前ですが…) 試しに別のサーバ(Linux系)でも試してみたのですが、こちらでは正常に動作しました。 参考までにサーバのスペックを以下に記載いたします。 以下の条件で使用可能な、お問い合わせ用のCGIがあれば教えていただけませんでしょうか。 以下、プロバイダのFAQページからの引用です。 OS:Windows 2003 R2 SP2 (エディションは各サーバーで異なります) ウェブサーバー:IIS 6.0, SSI (ISAPI) , Perl (ISAPI) , PHP (ISAPI / FastCGI) , ASP (ISAPI) , ASP.NET (ISAPI) PHP:PHP-5.2.9 Perl:Perl-5.8.7 ASP.NET:1.1 / 2.0 (相互排他で選択可) ASP:6.0 .NET Framework:2.5まで SQL:MSSQL 2000 SP4 MySQL:4.1.21 どうぞお力添えのほど、よろしくお願いします。

    • ベストアンサー
    • CGI
  • サーバーサイド言語とは?

    はじめまして。 WEB制作の知識については初心者なんですが、このたびWEBの制作を依頼することになりました。 そこで、タイトルにある、サーバーサイド言語について知りたいのですが、色々ある、サーバーサイド言語の違いを教えていただけないでしょうか? いくつか検索をして調べてみたのですが、そもそもの基本的知識がないためどうしても上手く理解ができず困っています。 サーバーサイド言語とはデータベースからの情報を取り出したり、動的なページを作りだすためのものだということと理解しているのですが、いくつもある言語?「Java,Perl,PHP,Ruby等」のうちこれらの選択によってWEBサイトを利用する側から見て、不可能な動作などは出てくるのでしょうか? たとえば、javaではこれができるけど、PHPではこれができない。など また、仮に、目に見える動作の限界がサーバーサイド言語の選択によってない(それに近い)場合、よく使われるのはいったいどれなんでしょうか?というかどれが無難ですか? 基本的なことを思い違いしているかもしれませんが、どうか教えていただけないでしょうか? よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • PerlとPHPで同一ファイルをファイルロック

    PerlとPHPで同一のファイルを読み書きする必要があるのですが、ファイルロックする機構を作るには互いの言語でmkdirで対応したほうがよいのでしょうか? flock関数がPerlにもPHPにもありますが、これは、PHPのプロセスで実行したロックの状態をPerlで検知したり、または逆のことはできないのでしょうか? もしできないとするとmkdirで同一の機構を作ったほうが良い気もしますが、何か問題などは起きないでしょうか。

    • ベストアンサー
    • PHP
  • PHPとPostgreSQLが使えるレンタルサーバ

    Webプログラマーです。言語はPHPを使ってます。 自宅でPHPとデータベースの学習をしたいと思っています。 データベースはPostgreSQLです。 これらの言語が使えるレンタルサーバを探しているのですが、 おすすめのサーバ会社があったら教えていただけませんか? PostgreSQLが使えるところって少ない気が・・・ ちょっとした動作確認がしたいので安価なところがいいです。

    • ベストアンサー
    • PHP

専門家に質問してみよう