トップページ > プログラム > 2016年06月11日 > ZgIjL8Zc

書き込み順位&時間帯一覧

13 位/199 ID中時間01234567891011121314151617181920212223Total
書き込み数0000000000000000200000125



使用した名前一覧書き込んだスレッド一覧
デフォルトの名無しさん
【PHP】下らねぇ質問はここに書き込みやがれ 5 [無断転載禁止]©2ch.net

書き込みレス一覧

【PHP】下らねぇ質問はここに書き込みやがれ 5 [無断転載禁止]©2ch.net
709 :デフォルトの名無しさん[sage]:2016/06/11(土) 16:11:06.58 ID:ZgIjL8Zc
最初flock絡みでデッドロックやらかした時は
スクリプト止まらないしエラー吐かないしで何が悪いのか全然わからなくて立ち往生状態だった

>>698
serializeほど楽じゃないが別途db用デーモンを起動させとかなくていいsqliteは便利
そういや手軽なdbの話じゃ最近berkeley dbの名前を全然見ないな…なんでだ
【PHP】下らねぇ質問はここに書き込みやがれ 5 [無断転載禁止]©2ch.net
712 :デフォルトの名無しさん[sage]:2016/06/11(土) 16:24:29.25 ID:ZgIjL8Zc
>>691
いや違う、falseを返すとかじゃなくてデッドロックを引き起こす
延々とロック取得待ち状態になってkillしなきゃいけなくなる
【PHP】下らねぇ質問はここに書き込みやがれ 5 [無断転載禁止]©2ch.net
716 :デフォルトの名無しさん[sage]:2016/06/11(土) 22:15:24.50 ID:ZgIjL8Zc
>>715
すまんが712は単純に「LOCK_EXされたファイルへのLOCK_EX」の挙動を書いただけ
flockの仕様から同一プロセスからの多重flockは後に指定したLOCK_**に上書きされるだけ、なのも確実(winは知らん)

で、記憶掘り返しながらこっちでも試してみたけど>>715の言うとおり
同一プロセス内でも、別プロセスでも、fopen->flock->fclose->fopen->flock でデッドロックしなかった
flock($fh, LOCK_EX)絡みでデッドロックになってハマった記憶が確かにあるんだがなあ…しかも1プロセスで
昔書いたソースとメモを読んでるけど該当箇所が見つからん
【PHP】下らねぇ質問はここに書き込みやがれ 5 [無断転載禁止]©2ch.net
722 :デフォルトの名無しさん[sage]:2016/06/11(土) 23:36:10.98 ID:ZgIjL8Zc
>>718
そんな感じがしてきた。(だが718のコードだと$lockを上書きしちゃってるからデッドロックは起きない)

同一のファイルを二重に開いて別々にファイルハンドルを保持し別々にflockしたとき
片方だけでもfcloseしたら両方LOCK_UNされることの対策か、とも思ったけど
実際に下記を手元のwin-5.2.0とlinux-5.1.6とlinux-5.6.8で試してみたら、どうも違うようだ
$file = './flock.lock';
$fh1 = fopen($file, 'a'); flock($fh1, LOCK_SH);
$fh2 = fopen($file, 'a'); flock($fh2, LOCK_SH);
fclose($fh1);
$fh3 = fopen($file, 'a'); flock($fh3, LOCK_EX); // いずれもここでデッドロックが発生

わからん
【PHP】下らねぇ質問はここに書き込みやがれ 5 [無断転載禁止]©2ch.net
725 :デフォルトの名無しさん[sage]:2016/06/11(土) 23:57:31.23 ID:ZgIjL8Zc
>>724
気にすんな
しかしこうなると真面目に手動LOCK_UNの意味・有効な場面がわからなくなってくるな
というかfclose/flock仕様変更の前後の差異がわからん


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。