PHP引用计数器引入垃圾收集机制
每种计算机语言都有自己的垃圾回收机制,程序员不必太多地关注程序内存的分配。PHP也不例外,但在面向对象编程(OOP)编程中,某些对象需要明确销毁,以防止程序执行内存溢出。
PHP垃圾收集机制(简称垃圾收集器)
在PHP中,当没有变量指向的对象,对象是garbage.php将记忆摧毁它;这是PHP的垃圾处理机制,防止内存溢出。
当PHP线程结束时,当前占用的所有内存空间都将被销毁,同时当前程序中的所有对象都将被同时销毁。GC进程通常与每个会话一起运行,其目的是在会话文件到期后自动销毁和删除这些文件。
二,__destruct /取消
的__destruct()析构函数执行垃圾回收的对象时。
取消破坏变量指向的对象,而不是对象。
三,会话和GC
PHP的工作机制,它没有固定的守护线程扫描会话的信息,决定是否失败,当一个有效的请求时,PHP将基于全局变量session.gc_probability和session.gc_divisor值,以确定是否启用会话GC。gc_probability = 1默认情况下,session.gc_divisor = 100说有1%的机会开始GC(即要求只在一个GC 100请求将从100开始)。
GC的工作是扫描所有的会话信息,减去当前时间会话修改最后一次,和session.gc_maxlifetime参数比较。如果存活时间超过gc_maxlifetime(默认为24分钟),会话将被删除。
但是,如果Web服务器上有多个站点和多个站点,则在处理会话时,GC可能会导致意外的结果。原因是GC不区分会话。从不同地点工作时。
那么这次你怎么解决呢
1。修改session.save_path,或使用session_save_path()来保存每个网站的会话到私有目录,
2。提供GC的启动速率,自然地提高GC的启动速率,降低系统性能,不推荐使用。
三.在代码来确定当前会话的生命时间,用session_destroy()删除