首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用php无限循环清理缓存的常用技术

问用php无限循环清理缓存的常用技术
EN

Stack Overflow用户
提问于 2010-11-10 19:50:05
回答 2查看 886关注 0票数 4

问题是当你用php执行无限循环时,你是如何控制内存清理的?粗略的例子是在无限的while循环中获取结果或将结果从mysql更新到mysql。

需要任何通用的方法。谢谢。

PS - PHP的所有缺点和错误都被完全迁移到python取代了……

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-11-10 20:45:38

据我所知,在PHP中,当变量超出作用域时,内存会被释放。但还有其他一些问题:

  1. 循环引用-PHP5.3应该可以解决这个问题-它还允许在你想要
  2. 的时候运行GC如果PHP在第一次迭代中占用了例如5 MB的内存,它的进程将占用这些内存,即使以后的迭代需要1 MB
  3. 你必须手动释放一些东西(比如前面提到的数据库结果)

使用脚本语言进行类似于进程的运行是非常糟糕的想法。

试着用另一种方法:

  1. 编写一个脚本,它将处理大约需要55-60秒才能运行的数据量。
  2. 添加一个cron作业,使其每分钟运行一次。
  3. 将某种互斥添加到脚本中,以便cron不会运行并发脚本-您可以在数据库表上同步它(使用SELECT FOR UPDATE)
票数 2
EN

Stack Overflow用户

发布于 2010-11-10 20:46:09

从PHP5.3开始,您可以按照文档中的here使用gc_collect_cycles()显式触发GC周期。

在此之前,它是您无法控制的,您必须等待PHP决定是时候自己倒垃圾了-要么通过尝试使用大量已使用但未附加的内存对象来超过内存限制,要么在满月时牺牲一只山羊并期待最好的结果。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4144163

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档