PHP 7.1からデフォルトで有効になる「Zend Signals」とは何か
下記PHP Internals MLでの議論によれば、今後「Zend Signals」がデフォルトで有効になる予定です。少なくとも7.1.0beta2時点では有効になっており、特に問題が見つからなければこのままリリースされるはずです。
で、Zend Signalsって何?
「Zend Signals」または「Zend Signal Handling」というのはZend Engineの内部的なシグナルハンドリングの仕組みです。PHP言語の世界に新たな関数を追加するようなものではありません。
この有効・無効はphpinfo()
で確認することができます。
先ほど紹介したML上での議論によれば、ざっくり次のような話のようです(かなり端折ってます)。
Dmitry「Zend Signalsを有効にすればOPcacheのシグナルハンドリングがマシになって、共有メモリに変なデータが残らないようにできる」
Dmitry「さらに"safe execution timeout"の導入でZend Engineでの余計なチェックが要らなくなる」
Dmitry「今日Zend Engineの無駄なチェックを外して、OPcacheに少しチェック足したりした」
Dmitry「なので、Zend Signalsをデフォルト有効にしたいんだけど」
Rasmus「賛成。それ入れたら7.0でセグフォ出るの治ったりしないかな」
サラっとRasmusが爆弾発言をしている気がします。7.0を高負荷環境で使っている方は要チェックかもしれません。
資料らしきもの
下記RFCによれば「Zend Signals」は5.4時代から実装されていたようですが、みんな存在すら忘れてたのを今回掘り起こして流用したような感じなんでしょうか。
正直なところ、このRFCを読んでもよくわからん印象ですよね…。
php.ini設定
Zend Signals有効だとzend.signal_check
という設定値が増えます。
zend.signal_check
boolean
置き換えられたシグナルハンドラを、シャットダウン時にチェックします。
マニュアルの説明だと完全に意味がわからないんですが、PHPのスタートアップ時に設定したシグナルハンドラがシャットダウン時に置き換えられていないかをチェックして、万一置き換えられていたら警告を出すという機能のようです。Zend Signals自体のデバッグ用といった感じでしょうか。
まとめ
この修正により、PHP 7.1以降でOPcacheまわりの安定性が増しているのかもしれません。全体的に謎が多めの印象です。
Author And Source
この問題について(PHP 7.1からデフォルトで有効になる「Zend Signals」とは何か), 我々は、より多くの情報をここで見つけました https://qiita.com/hnw/items/9a1b6957302894bd2c81著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .