• ベストアンサー

排他制御について

普段は排他制御として閲覧のみOKにしています。 最近、txtファイルをメモ帳で修正されてしまう事件が 連続2件発生してしまいました。 つまり排他制御をかけているソフトが終了したため、 ロックが解除されて、その後にメモ帳で上書きされてしまいました。 このため、閲覧も禁止にしたところ、不便だと文句が出ました。 メモ帳は原則禁止にすべきと考えていますが、 皆様はどう思われるでしょう。そこまで厳しくしなくてもいいのでしょうか。

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

  • ベストアンサー
  • gungnir7
  • ベストアンサー率43% (1124/2579)
回答No.4

そういうことでお悩みのようならバージョン管理システムとか有ります。 少々修得に時間がかかると思いますが検討されては? http://studio-fun.net/2008/05/03/21/

yasyatengu
質問者

お礼

ご回答有り難うございます。 そのようなものがあるのですね。 こちらの用途に合うかどうかは未知数ですが 検討させて頂きますね。

yasyatengu
質問者

補足

皆様から情報をご提供頂き色々と相談した結果、 バージョン管理システムを検討することとなりました。 どうなるか未知数ですが、一旦締め切らせて頂きます。

その他の回答 (3)

回答No.3

No.2さんの回答と同じで、アプローチ方法が違うと思います。 排他制御ソフトが終了した後にメモ帳で更新されているということは、 >あるファイルを他の人が使っている時に >他の人は強制的に閲覧のみにできれば解決できます。 という質問者様の考え(排他制御で解決できる)では駄目だということです。 質問者様からのお礼に、 >一応、全員にアクセス権は与えてあります。 とありますので、このアクセス権の設定で読み込み権限は与えても、書き込み権限は 特定の人に限定するようにコントロールしないと解決できません。 クライアントで使用するソフトの限定による方法は適切ではないと思います。

yasyatengu
質問者

お礼

ご回答有り難うございます。 やはり皆さんアクセス権で制御すべしという考え方ですね。 ちなみに重要な文書はアクセス権限がしてあります。 今回遡上に上がっているのは、一応txtと書きましたが、 それに該当する文書(例えばxmlやCSS)になります。 人の移動が結構激しいので、全員が関係者になり得ます。 私としてはクライアント側の制御を考えているのですが・・・

  • Toshi0230
  • ベストアンサー率51% (836/1635)
回答No.2

アプローチの方法が違うんじゃないかなぁ。 メモ帳で上書きができた、ってことは普通にコピーとかでも書き込めると思うので、クライアントソフトの制限による対応は現実的じゃないと思いますよ。 環境が書いてないので一般論でしかアドバイスできませんが、「アクセス制御」の設定を利用して、書き込みがそもそもできないようにするのが正解ではないかと。 大抵のファイルサーバにはそういう機能があるはずですよ?

yasyatengu
質問者

お礼

ご回答有り難うございます。 一応、全員にアクセス権は与えてあります。   サーバはIISになります。 あるファイルを他の人が使っている時に 他の人は強制的に閲覧のみにできれば解決できます。 クライアント側で使用するソフトを固定した方が いいのでしょうか?。 それはそれでまた不満が出て来そうですが。

  • joqr
  • ベストアンサー率18% (742/4026)
回答No.1

私は、公開するファイルはすべてPDF(編集不可)で登録しています メモ帳で重要な文書が開けるお粗末なシステムが悪い

yasyatengu
質問者

お礼

早速のご回答有り難うございます。 何となくお叱りを受けそうだなとは思ったのですが。 編集不可というのもアクセサシビリティの観点から 如何しようかと思案しております。

関連するQ&A

  • メモ帳の排他について

    2000サーバ上にあるテキストファイルを メモ帳で修正する場合、 エクセルとかは排他がかかって 他の人が使用中の時は読み取り専用になりますが メモ帳にそうのような機能があるのですか? 今だと修正した内容が、他の人により上書きされる 現象があります。

  • 「WINRAR」の排他制御

    PCのアーカイブソフト「WINRAR」でRAR書庫内のファイル内容を更新して上書き保管しても書庫内のファイル更新日は変わらず、再度開き確認しても更新が反映(保存)されていません。 書庫を閉じる段になるとエラーメッセージ『これらのファイルは外部の編集アプリケーションを閉じてから圧縮できます』が出ます。 「書庫に戻る」か「(更新を破棄して)書庫を閉じる」の二択しかなく、書庫に戻っても更新されていないファイルが残っているだけでです。 そこで再度そのファイルを開いて更新しても同じことの繰り返しで更新を反映させることは出来ず結局、更新破棄の一択になります。 ファイル更新したタスク(アプリ)は既に終了しているのに排他制御されています。 「(更新を破棄して)書庫を閉じる」を選択するまでは、【一時ファイル用フォルダー】に、更新が反映されたファイルが残っていますが、書庫に保存されずこのような作業ファイルがどんどん増殖していくだけで結局、書庫に保管することは出来ず書庫を閉じた際にこれらは消去されます。 妙な排他ロックが掛かるファイルは、エクセル、テキスト、PDFなど形式・アプリを問わず発生します。 同じファイルでも排他ロックが掛かったり、掛からなかったり再現の規則性は不明です。 書庫を一旦閉じて再度開いてやり直しても、妙な排他ロックの再現規則性は不明です。 WINRARはVersion6.21、Windowsは10の22H2(適用可能な更新は全て当ててあります) 現在は、書庫内データを大幅更新する際は、閉じる前に更新部分を別にコピペしておき、妙な排他ロックの際には気長にコピペ先から元書庫への更新作業を繰り返して、無事に更新が反映されるまで根気よく使っています。 原因、対策を教えてください。

  • ファイルロックの考え方について教えて下さい。

    ファイルロックについてなのですが、調べる程に 混乱してきてしまい、投降させて頂きました。 どうかご指導よろしくお願い申し上げます。 hoge.txt(ログテキスト)があったとします。 Aさんがhoge.txtの内容一覧を開くときに 最初のロックがかかりますよね。 一覧を表示できた時点で一旦ロックが解除され、 次に、修正する内容を選び、修正内容の書き込みを している時点では、hoge.txtは、ロックがかかっていない 状態になっているのですよね? この状態の時に、Bさんがhoge.txtの内容一覧を開き 修正内容を選んだあと、Aさんがhoge.txtへ修正内容を 書き込んだとしたら、Bさんがhoge.txtへ修正内容を 書き込む時は、読み込んだ時点のhoge.txtとは内容が 変っているのだと思うのですが、これは問題ないのでしょうか? この場合、Aさんが、hoge.txtから一覧を参照し、修正内容を選び、 修正の書き込みを実行し終わるまでの時間ずっとhoge.txtはロック状態に あるのが望ましいのでしょうか? でも、参照・修正項目選択・修正書き込み・修正投降までの 時間となると、2、3分では済まない時もありますよね。 この時間ずっとロックというのはあまり良く無いのでは… とも考えております。 修正・閲覧までの数分間をロック状態にしなければ、確かに Aさんが修正しようとしているログを、修正書き込み作業している間に Bさんに、削除されてしまう可能性もある(?)と考えると 一連の作業終了までの間ロックしなくてはいけない、とも思うのですが そうなるとflockなどの機能ですと、一覧を表示して、修正こうもくを 選択した時点で、一旦hoge.txtは閉じられる事になり、ロック解除 状態になるのですよね…? それとも、一旦hoge.txtが閉じられた時は、ファイルサイズ0になるように しておけば、一連の作業中ずっとロック状態になっている、という 事になるのでしょうか…?

    • ベストアンサー
    • Perl
  • JAVASCRIPT禁止でのボタン&リンク制御について

    C言語、CGIでボタン制御について教えて下さい。  (apacheを使用してます。JAVA SCRIPTは、使用禁止です。) CGI画面からボタンを連続で3回押下した場合に 最初の1回目、または、3回目のPOSTだけを有効にしたい場合 どうすればできますか?アドバイスください。 下記の方法は自分なりに方法を考えました。  (1)セッション管理     1 CGI全てのPOST、GET指定に、       セッションID(ユニーク)を付加させる。         ID+time     問題点:        いつセッションIDの生成するのか?、        いつセッションIDをチェックするのか?、        いつセッションIDを削除するのか?        自分自身わかっていません。  (2)セマフォ制御     CGIのmain関数の開始と終了で排他制御をする。     問題点:セマフォ制御をCGI自身にしていいものなのか?      URL:セッション管理 http://memo.blogdns.net/session.html

    • 締切済み
    • CGI
  • Excelのブックの共有機能について。

    Excelファイルをサーバーに置き、共同で作業を行おうと思っています。 2000まではファイルの排他ロックがかかったようなのですが、2002以降ではロックがかからず、誰もが同時に上書きできてしまいます。複数人で作業してしまった後、「他の人が編集したかも。コピーする?上書きする?」とか聞いてくるのですが、誰も更新してないのに聞いてくることもあるので、上書きしてしまいます。 それを気をつければいいのですが、ロックがかかったときのようにシステム的に制御したいと思っています。 で、ブックの共有機能というのがあるということを知り少し試しました。 まぁおおむねうまく行くのですが、たまにどうも出来なくなったりファイルが破損したりすることもありました。2000、2002、2003の混在環境で試した結果です。 こうすればうまく行くとか、バージョンをあわせた方がいいなどの経験情報を希望しています。 知りたいことは以下です。 (1)2002以降で排他ロックをかける方法はあるか。あるならその方法。 (2)ブックの共有機能をうまく使う方法、うまく行かない条件などの情報。 よろしくお願いします。

  • セマフォについて

    UNIXの装置内で、複数プロセスからの同時アクセス を排他する為にセマフォを使用するのですが、聞いた所 によると、セマフォを使用してロック中のプロセスが異 常終了した場合は、そのセマフォでロックした状態から 開放されないと聞きました。systmemVはロックしたまま で、posixは色々制御出来るかも・・・。と聞きました。 ロックを解除する方法があるものでしょうか?。又、そ のロックを解除する方法について、何らかの情報を教え て頂けますでしょうか?。

  • ロック専用ファイルについて

    ロック専用ファイルについて すいません、またまた教えてください。m(_ _)m 一つのページに掲示板とカウンターの2つの別々のコードを含めようとしてます。 (現在、掲示板は問題なく動作していて、掲示板のコードの後に カウンターのコードを書こうとしています。) 掲示板にロック専用ファイルを作って、下記のようにしています。 $lock_fp = fopen("lock.txt", "w"); flock($lock_fp, LOCK_EX); ~掲示板ログの更新処理~ fclose($lock_fp); この後に、カウンターのコードを書いて、同じようにロック専用ファイルを使った 排他ロックの仕組みにしたいと思いましたが、そこでふと疑問が・・・。 flock()の排他ロック開始の行 ~ ロック解除の行(ロックファイルのファイルポインタ破棄の行) の間に書かれている全ての処理は、他の人がアクセスしているときは 自分の番になるまで行われないと思うのですが、 ロック解除の行の後に書かれている他のPHPの処理は普通に進んでいくのでしょうか? だとすれば、カウンター用のロック専用ファイルは 掲示板用のそれ(lock.txt)とは別のもの用意しないといけないと思うのですが、 その考え方で合っていますか? ものすごく基本的な質問な気がするのですが、参考書や参考サイトを見ても なかなか回答を上手に見つけられず困っています。 お手数ですが、ご教授ください。よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • 排他制御

    SQL Server7.0で 複数端末が同じタイミングで SELECT * FROM A WITH(TABLOCK,HOLDLOCK) ロックを実行した場合はどの様な結果が期待できるのでしょうか?

  • 排他制御。

    現在ASPで作成しているプロジェクトでは ページが三つあります。 1ページ目でデータを選択し、排他をかける。 2ページ目でデータを更新して、 3ページ目で排他を解除しています。 この際2ページ目でページを閉じられた場合、 排他を解除しなくてはならないのですが なにかいい方法はありませんか? また、ブラウザの戻るボタンを押されたときにも 排他を制御しなくてはなりません。 なにか判断する方法はないでしょうか?

  • 排他制御について

    初めまして。 今回初めての投稿になります。 至らないことが多々あるかと思いますがその時は、ご指摘ください。 本題に、入りますと 今アクセスカウンターを作成してるのですけど。 サーバーでflock関数が使えないようなので、排他制御をmkdirでしようと色々調べていたのですが 下のようなサンプルを見つけ色々いじってみたんですが(下記はサンプルのままです。途中にechoがあったので消しておきましたが。) 疑問があります。 $dirnam = "lock"; $scnt0 = 0; while(mkdir($dirnam) === FALSE){ if ($scnt0++ >= 3){ rmdir($dirnam); exit(); } sleep(1); } $scnt0 = 0; while(mkdir($dirnam) === FALSE){ if ($scnt0++ >= 3){ rmdir($dirnam); exit(); } sleep(1); } rmdir($dirnam); 1:3行目は、下記の用に記述では何か問題があるのでしょうか? if(mkdir($dirnam) === FALSE){ while($sct0++ >= 3){ rmdir($dirnam); exit(); } sleep(1); } 2:この構文だと同時アクセスした時に、仮に最初のアクセスが3秒以上かかった場合(ほぼそんなことは、ないだろうと思いますが)lockディレクトリーを消してしまう可能性があるかどうかです。 PHPは、初心者です。 よろしくお願いします。 OS:XP サーバー:レンタル(ホスティング) PHPver:PHP5.3.1

    • 締切済み
    • PHP