php-防止内存溢出的正确方法,知道允许的内存大小,但是无法更改它
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了php-防止内存溢出的正确方法,知道允许的内存大小,但是无法更改它,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1948字,纯文字阅读大概需要3分钟。
内容图文
![php-防止内存溢出的正确方法,知道允许的内存大小,但是无法更改它](/upload/InfoBanner/zyjiaocheng/945/dbab957c26804b48aa80e9bfba237cf4.jpg)
在寻找stackoverflow的答案之后,我决定唯一要解决的问题就是有关最大允许内存扩展的问题.我的问题是,是否有人知道如何插入适当的制动器,以防脚本由于耗尽内存而失败.
关于A点,这也与另一个我未能找到答案的问题(即B点)密切相关,这就是时间限制:关于如何使用ini_set扩展时间限制的另一组答案,以及依此类推,如果脚本已经超过适当的时间,则可以通过手动创建断点来找到可能的解决方案.很好,但是无法控制正在加载的脚本可能无法阻止它.
现在,回到问题所在,有人知道如何使用一种安全的方法正确地防止此类错误吗?如果真的有关于此主题的已回答问题,请链接至我.
最好的祝福,
解决方法:
减少程序可能使用的内存量的常用方法是将问题分解为多个部分,迭代地优化答案,使用磁盘上的文件代替内存来存储结构等.在不了解应用程序细节的情况下,真的建议最好的方法
但是考虑一下可能在100kb的内存空间中排序100兆字节输入文件的任务;您可能会认为如果没有一次将所有100 MB的内存实际容纳在内存中就不可能完成任务.但是,您可以通过许多不同的方法轻松地将此问题分解为较小的部分:
>也许对所有以整数0-1000 into one file, 1001-2000 into another file, 2001-3000 into a third file, etc.开头的行进行排序将所有行都隔离到不同的文件中之后,对每个文件进行排序,然后通过简单的合并合并输入文件.
>也许一次排序前1000行,将它们存储到一个临时文件中,然后将前1000行存储到另一个临时文件中,依此类推;然后通过从每个文件中选择最低的输出,将其输出,从其文件中删除它并进行迭代来选择merge the output.
考虑一下图像编辑的任务:您可能不将整个图像加载到内存中,而是只将要处理的部分读入内存,执行操作,然后立即将内容重新写回到磁盘.
或者,如果您的问题是大的正则表达式匹配,那么您可能会遇到一个严重的backtracking问题,即一次存储了太多状态.您可以转换为different matching operators以防止回溯,并且可以通过多次匹配解决问题.
这取决于您必须解决的问题,如何将其分成较小的部分以减少总体内存使用量.请注意,这些技术中的许多技术可能会增加执行时间,因为它们需要更多的磁盘IO或重新解决可能已保存在内存中的问题.有时它们会缩短执行时间,因为您处理或保留的数据越少,locality of reference越好,并且缓存可以工作得越好. (这很罕见.由于解决问题更加简单,请参见Programming Pearls,这是一个非常惊人的提速案例…)
内容总结
以上是互联网集市为您收集整理的php-防止内存溢出的正确方法,知道允许的内存大小,但是无法更改它全部内容,希望文章能够帮你解决php-防止内存溢出的正确方法,知道允许的内存大小,但是无法更改它所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。