描述:
下面的测试脚本在 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/