私は実際に拡張子(PHP 5.6
)(この拡張モジュールはLinuxサーバーでのみ使用されます)を開発しました。この拡張モジュールではC pthread
を使用したいと思います。pthread on PHP拡張
PHP
をZTS
オプションでコンパイルすることなく、pthread
を使用する拡張子を作成することはできますか?
がphp
でpthreadを使用することができるようにする拡張機能があるが、この拡張機能はzts
オプション付きphp
のコンパイルを必要とするため。
私は実際に拡張子(PHP 5.6
)(この拡張モジュールはLinuxサーバーでのみ使用されます)を開発しました。この拡張モジュールではC pthread
を使用したいと思います。pthread on PHP拡張
PHP
をZTS
オプションでコンパイルすることなく、pthread
を使用する拡張子を作成することはできますか?
がphp
でpthreadを使用することができるようにする拡張機能があるが、この拡張機能はzts
オプション付きphp
のコンパイルを必要とするため。
有効 ZTSモードなしPHP拡張にスレッドを使用することが可能であるが、スレッドがをは(PHPコード自体を含む)を内部機能のいずれかと相互作用してはなりません。これは、ZTSモードが有効になっていなければ、スレッドセーフではありません(明らかに)、Zend Engine(ZE)にはかなりのグローバルステートがあるからです。この場合、スレッドでできることについてはかなり制限されています。
ZTSモードを有効にすると、スレッドは内部関数とPHPコードと対話できますが、共有されていないアーキテクチャはでなければなりません。これは、スレッドセーフではないZEのいくつかの部分、特にZend Memory Manager(ZMM)が存在するためです。これは、スレッドごとにPHPのインタープリタを別個に作成しなければならないことを意味します(これは独自のZMMをパックします)。すべての関数、クラス、インタフェース、特性などがこの新しいインタプリタインスタンスにコピーされ、完全に別個の文脈。