2ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

質疑応答罵詈雑言拡散不希望 byト

500 : ◆8bit.JzJJY (地震なし):2012/09/01(土) 21:46:56.14 ID:eFESUChQ0
>>422
> >>407さん
> その通りです。/mdに書き込むのにエラーが出ました。

>>407 の言うとおり moveはアトミックな処理じゃなくて
A->Bがそれぞれ別のファイルシステムにあるときには、 A->Bにコピーし、その後Aを消すという実装になっているようなんで、
コピー中に他の他のプロセスなどから同じファイルにたいして move() が実行されると、ファイルは壊れるわな。

perlの書き方は全く知らないんで、実例は挙げられないけれど、こんな感じにすればいいんじゃないかな。

1. A → B' にコピー B' は B とも、他のプロセスが作る可能性がある名前ともぶつからないファイル名にする。
2. B' → B に rename する。

ただ、ファイルシステムをまたがるのならば、元のファイルと移動先のファイルに rename or move を
使いたくなる状況っていうのが理解できないんだよね。
鯖落ちしたときに subject.txt が残るようにということであれば ssd / md 間で起こりうるのは
copy だけじゃないのかしら。

もし、 ssd でファイルを作って md に move し、 httpd に読ませるということをしようとしているのならば、
ファイル自体が壊れなくても、 md に move している間に httpd は中途半端なファイルを読むことになるんで
破たんしていると思う。

399 KB
★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.02.02 2014/06/23 Mango Mangüé ★
FOX ★ DSO(Dynamic Shared Object)
Hello 2ch !!
ERROR NO=0

maxLA=80.000000
LA=0.001465
2020/11/27 16:49:11 日本時間が取れるようになりました。
/operate2/1345596810/500 PATH_INFO
(null) QUERY_STRING
/home/ch2qb7/public_html/test/ cwd
/home/ch2qb7 home
qb7.2ch.net server name

ita[operate2]
key[1345596810]
res[500]
where[3]
size[407893]
time[1347123480000000] LastModifyed 今回は無しの方向で、

lineN[1001]
subject[質疑応答罵詈雑言拡散不希望 byト]

st[499]
to[499]
ls[0]
nf[1]
xxx[500]