首页 » PHP教程 » php耗尽资本技巧_PHP内存耗尽缺点分析

php耗尽资本技巧_PHP内存耗尽缺点分析

duote123 2024-11-24 0

扫一扫用手机浏览

文章目录 [+]

但是这里有一个很大的问题,php许可访问的内存大小是35389440字节,而实际要分配的只有1406507字节。
为什么要分配的内存比实际许可访问的内存小还会引发致命缺点呢?

查了很多这方面的资料,创造很多这样搜索结果,都是实际要分配的内存要小于许可的内存,但是没有找到对此的解释。

php耗尽资本技巧_PHP内存耗尽缺点分析

首先想到是不是PHP本身这个内存限定功能有bug,于是做了如下实验:

php耗尽资本技巧_PHP内存耗尽缺点分析
(图片来自网络侵删)

1, 天生一个10MB大小的文件 dd if=/dev/zero of=10mb bs=1M count=10

2, 天生如下php文件并访问:

<?phpini_set(\"大众memory_limit\公众,\"大众2M\"大众);echo file_get_contents(\公众./10mb\"大众);?>

创造其报错“Fatal error: Allowed memory size of 2097152 bytes exhausted (tried to allocate 10493952 bytes)”,这个报错和我们设置的2M的内存限定,实际要分配10M的情形是一样的。
这解释内存限定本身功能是没有问题的,报错的数据和实际的数据是能对上号的。

那么,上面的问题出在哪里呢?为什么实际要分配的内存比限定的内存要小,还会导致出错?又查了一下php关于memory_limit的解释1:

This sets the maximum amount of memory in bytes that a script is allowed to allocate. This helps prevent poorly written scripts for eating up all available memory on a server. Note that to have no memory limit, set this directive to -1.

这里也没有对上述问题进行解释,只是见告我们memory_limit用来限定一个脚本等分配的内存大小用来保护做事器免受poorly written scripts的影响。
也便是说memory_limit是限定单个PHP运行脚本的可访问内存大小的,那会不会存在一种可能,全体线程中的多个操作加起来的内存超过了总限定大小,但单个操作的内存又只占全体限定的很小一部分,而末了那根压去世骆驼的稻草是PHP报错出来的,以是显示出试图访问内存小于限定的内存大小?为了验证这个猜想,我把上述PHP文件改成这样并访问:

<?phpini_set(\"大众memory_limit\"大众,\"大众15M\公众);$a = file_get_contents(\"大众./10mb\公众);$b = file_get_contents(\公众./10mb\"大众);?>

创造其报错“Fatal error: Allowed memory size of 15728640 bytes exhausted (tried to allocate 10493952 bytes)”,实际要分配10M内存,小于许可访问的15M,验证了前面的猜想。
也便是说,程序在运行时如果超过设置的内存,PHP报错信息只会提示当前操作试图访问的内存大小。

那么直接增加内存限定的大小就可以办理这个问题了,限定的大小可以通过在php的shutdown函数上注册memory_get_usage函数来统计网站的内存花费,取一个得当的值即可。

标签:

相关文章

Go语言,引领未来编程的新潮流

在当今这个快速发展的时代,编程语言作为信息技术的核心,始终备受关注。近年来,随着云计算、大数据、人工智能等技术的崛起,一种名为Go...

PHP教程 2024-12-26 阅读0 评论0

Go语言,开源世界的璀璨明珠

在开源世界里,有一种语言如同璀璨的明珠,闪耀着独特的光芒,那就是Go语言。自2009年由Google推出以来,Go语言以其简洁、高...

PHP教程 2024-12-26 阅读0 评论0

银行IT结构,构筑金融科技新蓝图

随着金融科技的蓬勃发展,银行IT结构已成为推动金融行业变革的重要力量。在数字化、智能化的大背景下,银行IT结构的优化与创新已成为各...

PHP教程 2024-12-26 阅读0 评论0

锡恩IT平台,引领企业数字化转型的新引擎

随着信息技术的飞速发展,企业数字化转型已成为全球范围内的一种趋势。在这个背景下,锡恩IT平台应运而生,为众多企业提供了高效、便捷的...

PHP教程 2024-12-26 阅读0 评论0

闲聊IT科技,介绍数字时代的智慧生活

随着科技的飞速发展,我们的生活已经离不开IT科技。从早晨起床,到晚上入睡,IT科技都贯穿在我们的日常生活中。今天,就让我们一起来闲...

PHP教程 2024-12-26 阅读0 评论0