如何巧妙利用PHP的GC回收机制优化内存管理?
- 内容介绍
- 文章标签
- 相关推荐
本文共计2085个文字,预计阅读时间需要9分钟。
目录+前言+简单面包+初步GC+小试牛刀+总结+前言+在前面的面讲魔术方法时,就提到了一个问题,+__destruct()++无论如何都会被触发,+但前提是必须完成程序的开始与结束,+但如果是程序走远了怎么办?
目录
- 前言
- 简单铺垫
- 初识GC
- 小试牛刀
- 总结
前言
在前面讲魔术方法时就提到过一个问题,__destruct()无论如何都会被触发,但是前提是必须得完成程序的开始与结束,但是如果程序走了一半,突然报错,那么__destruct()不会触发了,那如果又必须要__destruct()触发又得怎么搞呢?
这里就要提到一个垃圾回收机制---GC回收!!
简单铺垫
先看看这个简单的序列化,一定要先思考再看后面的答案
<?php highlight_file(__FILE__); class errorr{ public $rce; public function __destruct(){ eval($rce); } } $a = $_GET["a"]; unserialize($a); ?>
很简单的一个反序列化,想办法控制$rce这个变量就可以达到命令执行的目的。
本文共计2085个文字,预计阅读时间需要9分钟。
目录+前言+简单面包+初步GC+小试牛刀+总结+前言+在前面的面讲魔术方法时,就提到了一个问题,+__destruct()++无论如何都会被触发,+但前提是必须完成程序的开始与结束,+但如果是程序走远了怎么办?
目录
- 前言
- 简单铺垫
- 初识GC
- 小试牛刀
- 总结
前言
在前面讲魔术方法时就提到过一个问题,__destruct()无论如何都会被触发,但是前提是必须得完成程序的开始与结束,但是如果程序走了一半,突然报错,那么__destruct()不会触发了,那如果又必须要__destruct()触发又得怎么搞呢?
这里就要提到一个垃圾回收机制---GC回收!!
简单铺垫
先看看这个简单的序列化,一定要先思考再看后面的答案
<?php highlight_file(__FILE__); class errorr{ public $rce; public function __destruct(){ eval($rce); } } $a = $_GET["a"]; unserialize($a); ?>
很简单的一个反序列化,想办法控制$rce这个变量就可以达到命令执行的目的。

