ぼっち勉強会スマートフォン用の表示で見るぼっち勉強会この広告は、90日以上更新していないブログに表示しています。file_get_contents)5.2.6でBugFixされています。(Ilia)なので5.2.6以降なら動きますが、5.2.6未満なら動かないはずです。いっても、動くのも動かないのも動作検証はしてないけど。以下、このChangeLogに至るまでに調べたメモ。きっかけfile_put_contentsは便利です。いちいちfopen->fwrite/fread->fcloseする必要がないからです。Manualcronで動かす場合や簡易的な個人作業ログを吐き出す場合は問題ありません。複数ユーザー(プロセス)が対象ファイルにアクセスするような場合、ファイルロックについて考慮しなければなりません。すればよいでしょうか。マニュアルを見るとLOCK_EXというそれっぽいオプションがあります。LOCK_EX書き込み処理中に、ファイルに対する排他ロックを確保します。ロック」でググってみます。検索結果2つ目と3つ目に不吉なタイトル。file_put_contentsのLOCK_EXは正常に動かないという情報が。検索しても特に引っかからないので「本当に?」という疑問がありました。phpのソースを落としてくる今ではGithub上にphpのソースがあるのでそこから取得します。git://github.com/php/php-src.gitそれなりに大きいのでちょっと時間がかかります。落としてきた時点ではmasterなわけで、この時点では5.4でした。該当箇所に見当をつけるとりあえずLOCK_EXでgrepしてみます。いろんな種類のファイルがありますが実体が見たいので.cに絞ります。*//Users/kanno/workspace/lib/php/php-src%出ました。ext/standard/file.cというのが怪しい。このファイルにfile_put_contentsという文字列があるか調べてみます。context]])PHP_FUNCTION(file_put_contents)いました。PHP_FUNCTIONが何かはさておきなんかここがfile_put_contentsの実体っぽい。file_put_contentsの中を見てみる(v5.4)エディタでext/standard/file.cを開きます。エディタはそう、Vimです。長いので一部省略します。(省略:たぶん書き込み処理)}LOCK_EXを見てちゃんとモードをcにしてます。そのモードを使ってopenしてるっぽい。あれーこれちゃんと動くんじゃないのかーと思いつつ、解読の仕方が違うのかとあれこれ悩む。ちなみにphp_stream_open_wrapper_exが具体的に何をするかとか全然知らない。途中まで追っていったけどよく分からなくなって引き上げた。'PHP-5.1'/Users/kanno/workspace/lib/php/php-src%これだけ。素敵!file_put_contentsの中を見てみる(v5.1)結構変わっているので、問題となる部分だけ抜き出します。(省略)}今度は同じphp_stream_open_wrapper_exでも渡すモードの判定がおかしい。"wb"」なので、LOCK_EXだとwbで開いてしまう。この後ろでlock取得っぽいことはしているんですが、ファイルを開く時にwモードで中身切り詰めて空にしてるのでダメです。上記ブログに書かれていたような不具合が発生します。たしかにバグってますね。修正されたバージョンを調べるこのあたりで再度ググったりしたんですが、そしたらちゃんとBugにありました。lockingあとはこの番号#43182をもとにChangeLogから探すだけ。冒頭で述べたように、5.2.6で対応されたようです。おわりネットの情報を鵜呑みにせず、気になるところは自分で調べることが大事ですね。2018でこのようなLTがありました。(1)はてなブログをはじめよう!kanno_kannoさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。