php 因对象过多而崩溃

标签 php docker segmentation-fault

描述:

下面的测试脚本在 10 次迭代中运行良好,但在 400000 次迭代中崩溃(段错误),但它不应该崩溃。

在 docker 上使用 Php 7.2(版本 17.09.0-ce-mac35 (19611))
没有扩展。

测试脚本:

<?php
class Lim {
    public $id;
    public $inv;
    public $fi;
    function __construct($id) {
        $this->id = $id;
        $this->inv = new Inv($this);
    }
};

class Inv {
    public $inv;
    public $fi;
    function __construct($inv) { $this->inv = $inv; }
}

$max = 400000;
//$max = 10;

$lim0 = new Lim(0);
$limp = $lim0;
for ($i=1; $i<$max; $i++) {
    $lim = new Lim($i);
    $lim->fi = $limp->inv;
    $limp->inv->fi = $lim;
    $limp = $lim;
}

有谁知道为什么?
谢谢

最佳答案

您正在创建一个新的 $lim但不破坏旧的。所以你的内存不足了。

添加这个

unset($lim);


$limp = $lim;

关于php 因对象过多而崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47784690/

相关文章:

Docker-compose 服务启动顺序

c - 重置变量: Segmentation fault

php - 无法链接到 MySQL 数据库

docker - COPY失败:stat:没有这样的文件或目录

php - MySQLI 准备的语句给了我奇怪的结果

docker - 在 Docker 终端 Windows 中更改目录

c - 使用 C api 调用 Ruby 函数时出现段错误

c - 为什么我的代码会给我垃圾值,有时还会出现段错误?

php - 将 Wordpress 最近的帖子集成到现有网站中

php 注销不起作用