国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > PHP > 正文

PHP析構方法 __destruct() 不觸發的兩個解決辦法

2020-03-22 17:56:13
字體:
來源:轉載
供稿:網友
本篇文章主要給大家介紹PHP 析構方法 __destruct() 不觸發的兩個解決辦法。

有時候在 PHP 里類循環引用時,會導致 __destruct() 不觸發的問題,先上問題代碼:

 ?phphtml' target='_blank'>class Proxy private $object; public function __construct($object) $this- object = $object; public function __destruct() var_dump( __destruct:Proxy class Test private $proxy; public function __construct() $this- proxy = new Proxy($this); public function __destruct() var_dump( __destruct:Test $test = new Test;unset($test);echo no __destruct, wait 3s , PHP_EOL;sleep(3);echo __destruct now: , PHP_EOL;

如上代碼,運行unset($test)時,不會觸發__destruct(),因為有了循環引用。

再看下面的解決方法1的代碼:

 ?phpclass Proxy private $object; public function __construct($object) $this- object = $object; public function __destruct() var_dump( __destruct:Proxy class Test private $proxy; public function __construct() $this- proxy = new Proxy($this); public function __destruct() var_dump( __destruct:Test  public function close() $this- proxy = null;$test = new Test;$test- close();echo __destruct now: , PHP_EOL;unset($test);sleep(3);echo no operation , PHP_EOL;

上面的代碼,在unset之前,將Test類中的proxy設為null,然后再unset,就可以觸發__destruct()了。

當然,你也可以手動gc(解決方法2):

 ?phpclass Proxy private $object; public function __construct($object) $this- object = $object; public function __destruct() var_dump( __destruct:Proxy class Test private $proxy; public function __construct() $this- proxy = new Proxy($this); public function __destruct() var_dump( __destruct:Test $test = new Test;unset($test);echo __destruct now: , PHP_EOL;gc_collect_cycles();sleep(3);echo no operation , PHP_EOL;

希望對需要的朋友有所幫助!

以上就是PHP析構方法 __destruct() 不觸發的兩個解決辦法的詳細內容,PHP教程

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 澳门| 瑞昌市| 松桃| 嫩江县| 民丰县| 井研县| 苍山县| 成都市| 崇州市| 八宿县| 剑川县| 榕江县| 通海县| 普陀区| 永宁县| 南郑县| 巴东县| 浙江省| 三台县| 阳原县| 莒南县| 巴南区| 大埔区| 横峰县| 潞西市| 临洮县| 南华县| 榕江县| 宜昌市| 涪陵区| 顺平县| 禄丰县| 深圳市| 武汉市| 古田县| 泰来县| 新干县| 乐昌市| 昭觉县| 治县。| 长岛县|