闇PHP勉強会に参加してきました
第七回闇PHP勉強会 〜あなたが闇だとおもったらそれは闇です
に参加してきました!
闇とは
以下転載
闇PHP勉強会について 闇PHP勉強会はPHPの内部構造や拡張モジュールなど、PHPのC言語レイヤの話題が多めの勉強会です。ふつうのPHP勉強会に比べると若干マニアックな集まりだと思います。 この勉強会の名前は「普段は光が当たらない場所に光を当てるPHP勉強会」という意味です。他の闇を期待された方はごめんなさい。
ということです。
ひらたくいえば、PHPといいつつPHPの中身や、CでかかれたPHP拡張などのお話がメインの勉強会です。大変に興味深いお話が多い。
トーク内容について
@hnwさん「realpath cacheとOPcacheの面倒すぎる関係」 (20〜30分)
最近話題のrealpath_cacheのお話と、それとは違うが同様な結果となるOPcache+fastCGIの挙動のお話です。
PHPのデプロイについて様々な方法がありますが、CapistranoやDeployerをはじめとするツールでsymlink方式を採用している所が多いと思います。その場合、いくつかの罠があるとのことです。
詳しくは資料を見ていただきたいですが、個人的にまとめると…
- realpath_cacheは、Symlinkなどが「解決されたリアルパスで」キャッシュされるので、Symlink切り替えでは(キャッシュタイムアウトまで)更新を検知できないことがある。
realpath_cacheをオフにしたり(〜ttl = -1や〜size = 0)、あるいはパージすることで、とりあえず解決ができる − だがしかし…(資料みましょう)
OPcacheはコードをキャッシュするが、Expireは設定されていないので、更新を検知できないと永遠に反映されない。
- OPcacheはopcache.revalidate_path=0だと、pathの再解決をしない
- 結果として、Symlink切り替えだと、Opcacheが一行にキャッシュを反映しないことがある
- ただ、これはこれはSAPIによって挙動がちがい、mod_phpだとこれが問題にならなかったり…
- だがしかし…(資料みましょう)
どちらの問題もコードの反映に失敗するというものですが、仕組みがちがって興味深かったです。
私はいまだにFTPでアップロードする案件もある程度の人間ですので、この挙動を把握しつつも、なんかあったらええかんじにrestartかけちゃえばいいかな!という感じもあります。
なお、質問タイムでは、「ウチではキャッシュのパージを積極的におこなったいる」などという実例の話もありました。
y-utiさん「JITのコードを読んでみた」(20〜30分)
これは率直にいって興味深く、まだ先の話なので全然チェックしてない所でした。
パースされたコードを見やすい(書き出しやすい)っぽいので、そのうち試してみたい。(といっていると雑事にとらわれていつまでも見ない罠)
edvakfさん「XPathでソースコード検索」(LT、5分)
関数の第三引数がないものを検索したい!という要望において、xmlにコードをパースした上で、XPathをつかうと検索しやすい!というお話。
なるほど!という感じがあります。
質問タイムでは、他のツールで同様のことをする例などが共有されていました。
@do_akiさん 「PHP AST 徹底解説 補遺」 + 「php における signal 処理の話」(20〜30分)
www.slideshare.net
PHPでsignalは個人的にはもっとちゃんとしらべて、使える所では使ってみたいですね(不用意につかってはいけない)
7.1は見た目以上に中身が色々かわっていることを再認識しました。
sasezakiさん「このPHP拡張がすごい!2017」(LT、5〜15分)
スライドがかわいい
速い(スライドをめくるのが)
楽しい
前回が2013だったらしいので、次は2021でしょうか、待ちます。
mpywさん「ストリームフィルタで暗号化しよう!」(LT、5分)
Mcryptが非推奨になり、PHPで逐次的にデータを暗号化する術がなくなったのでは?という話。
まあ、まだ非推奨なだけでつかえるけど、結構困るなこれ。
そして、失礼ながらハンドルネームの読み方がはじめてわかりました…。
まとめ
闇PHP勉強会は知らないトピックが非常に多く、質問なども活発で非常に面白かったです。
懇親会や二次会でも色々お話ができて楽しかったです、次回もぜひ参加したいですね。
会場を提供いただいていたピクシブ様にも感謝いたします。
二次会も解散しましたー。皆さまおつかれさまでした!今回も楽しい集まりでした。次回は5月開催目標ということでよろしくお願いします! #yamiphp
— hnw (@hnw) 2016年12月11日