PHP中如何发出内存使用警告?

Céd*_*ard 5 php memory

在 PHP 中,当脚本消耗超过 memory_limit 值时,脚本会停止并出现错误。如何添加警告级别:如果我的脚本消耗超过 90Mb,我会在日志文件中收到警告,但脚本会继续运行,如果消耗超过 128Mb,仍然会崩溃?

我对 PHP 扩展或 PHP C 代码一无所知,但只要我们已经自己构建了 PHP,我们甚至可以修补代码。

在 Zend/zend_alloc.c 中我可以看到这个

if (segment_size < true_size || heap->real_size + segment_size > heap->limit) {
Run Code Online (Sandbox Code Playgroud)

在此之前添加一行并将已用内存与另一个限制进行比较并发出警告非常容易。

我可以在扩展中或通过修补 PHP 代码来完成此操作吗?为什么这还不存在?这是一个坏主意吗?这已经存在于某处吗?

为 MAX_EXECUTION_TIME 添加相同的警告似乎更困难,因为我仍然不明白计时器的处理方式。

cen*_*cen 0

您可以使用memory_get_usage()在 php 脚本中执行此操作。它并不是真正处于系统级别,您必须在脚本执行时多次调用它才能捕获您使用过多的时刻。