diff --git a/language/fibers.xml b/language/fibers.xml index 8a6d1ec969..0d67853ae0 100644 --- a/language/fibers.xml +++ b/language/fibers.xml @@ -1,6 +1,6 @@ - + ファイバー @@ -56,8 +56,8 @@ - 現状の制限により、 - ファイバーをオブジェクトのデストラクタ中で切り替えることはできません。 + PHP 8.4.0 より前のバージョンでは + ファイバーをオブジェクトの デストラクタ 中で切り替えることはできませんでした。 diff --git a/language/oop5/decon.xml b/language/oop5/decon.xml index 49a7b0124e..e3698f80cd 100644 --- a/language/oop5/decon.xml +++ b/language/oop5/decon.xml @@ -1,6 +1,6 @@ - + @@ -377,6 +377,20 @@ $obj = new MyDestructableClass(); HTTP ヘッダはすでに送信されています。スクリプトのシャットダウン時の作業ディレクトリは、 SAPI によっては (たとえば Apache など) 異なります。 + + デストラクタが自身のオブジェクトへの新しい参照を作成した場合、参照カウントが再びゼロになったときや + シャットダウンシーケンス中に、再度呼び出されることはありません。 + + + PHP 8.4.0 以降、 ガベージサイクルの収集 が + ファイバーの実行中に発生した場合、 + 回収がスケジュールされたオブジェクトのデストラクタは、 gc_destructor_fiberと呼ばれる + 別のファイバー内で実行されます。 + このファイバーが中断された場合、残りのデストラクタを実行するために新しいファイバーが作成されます。 + 中断された gc_destructor_fiber はガベージコレクタによって参照されなくなり、 + 他の参照がなければ回収される可能性があります。 + デストラクタが中断されたオブジェクトは、デストラクタが復帰するかファイバー自体が回収されるまで回収されません。 +