专栏首页PHP在线PHP的GC垃圾收集机制

PHP的GC垃圾收集机制

每一种语言都有自己的自动垃圾回收机制,让程序员不必过分关心程序内存分配,但是在OOP中,有些对象需要显式的销毁;防止程序执行内存溢出。 一、PHP 垃圾回收机制(Garbage Collector 简称GC) 在PHP中,没有任何变量指向这个对象时,这个对象就成为垃圾。PHP会将其在内存中销毁;这是PHP 的GC垃圾处理机制,防止内存溢出。 当一个 PHP线程结束时,当前占用的所有内存空间都会被销毁,当前程序中所有对象同时被销毁。GC进程一般都跟着每起一个SESSION而开始运行的.gc目的是为了在session文件过期以后自动销毁删除这些文件. 二、__destruct /unset __destruct() 析构函数,是在垃圾对象被回收时执行。 unset 销毁的是指向对象的变量,而不是这个对象。 三、 Session 与 GC 由于PHP的工作机制,它并没有一个daemon线程来定期的扫描Session 信息并判断其是否失效,当一个有效的请求发生时,PHP 会根据全局变量 session.gc_probability 和session.gc_divisor的值,来决定是否启用一个GC, 在默认情况下, session.gc_probability=1, session.gc_divisor =100 也就是说有1%的可能性启动GC(也就是说100个请求中只有一个gc会伴随100个中的某个请求而启动). GC 的工作就是扫描所有的Session信息,用当前时间减去session最后修改的时间,同session.gc_maxlifetime参数进行比较,如果生存时间超过gc_maxlifetime(默认24分钟) ,就将该session删除。 但是,如果你Web服务器有多个站点,多个站点时,GC处理session可能会出现意想不到的结果,原因就是:GC在工作时,并不会区分不同站点的session. 那么这个时候怎么解决呢? 1. 修改session.save_path,或使用session_save_path() 让每个站点的session保存到一个专用目录, 2. 提供GC的启动率,自然,GC的启动率提高,系统的性能也会相应减低,不推荐。 3. 在代码中判断当前session的生存时间,利用session_destroy()删除.

本文分享自微信公众号 - php(phpdaily)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2016-07-02

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Session原理简述

    Session存在的意义,估计每个做web开发的人都是了解的,就为了解决HTTP是无状态协议所带来的问题,不多说了。这里主要想说的是服务端与客户端是如何利用se...

    wangxl
  • Session原理简述

    Session存在的意义,估计每个用做web开发的人都是了解的,就为了解决HTTP是个无状态协议所带来的问题,不多说了。这里主要想说的是服务端与客户端是如何利用...

    wangxl
  • memcache安装方法

    一个朋友的服务器换成了64位系统,增加了内存。 让我给装一下memcached,好吧! 经过一翻努力,安装成功,记录一下。 一、安装memcache的...

    wangxl
  • TP框架中如何使用SESSION限制登录?

    之前总是被问题今天才明白,最高效的来做页面访问限制问题。OOP思想中的继承特性,实现验证,是否已经登录,不必每个页面都进行判断。实现如下:

    公众号php_pachong
  • featuretools,可自动构造机器学习特征的Python库

    机器学习模型只能从我们给定的数据中学习,所以构造一个和任务相关的特征是至关重要的。

    机器学习AI算法工程
  • go语言调度器源代码情景分析之八:系统调用

    我们将在最后一章讨论有关系统调用方面的抢占调度,所以这里有必要对系统调用有个基本的了解。

    阿波张
  • [android] 短信的广播接收者

    在<activity/>节点设置屏幕朝向属性,android:screenOrientation=”landscape”

    陶士涵
  • 竞品分析 VS 功能分析

    理论上来讲任何一个互联网产品都会有一个生命周期,只不过有些产品没度过探索期就夭折了,有些产品顽强的活了下来,这个以后有机会再聊。

    靠谱先生
  • 云计算技术如何改变医疗行业

    云计算对医疗行业的另一个重要优势是灵活性,因为提供商可根据需要扩大或缩小资源。云计算以易于使用的方式提供对应用程序和资源的实时和远程访问。此外,它还减少了推出新...

    静一
  • 理解多层CNN中转置卷积的反向传播(附代码)

    WZEARW

扫码关注云+社区

领取腾讯云代金券