我有一个带有新对象的小循环。
for ($i = 0; $i < $ilen; $i++)
{
$time = microtime(true);
$row = db_row($res, $i);
echo "(" . ($i + 1) . " / " . $ilen . ") ";
$element = new dataStructureElement($row['code']);
$elementT = $element->getTypeClass();
unset($element);
$elementT->setName($row['name']); // bad line!
unset($elementT);
echo number_format((microtime(true) - $time) * 1000, 1) . 'ms ';
echo "\n";
}
如果我遗漏了“坏线”,那么我会得到以下结果:
(1 / 3000) 1.7ms (2 / 3000) 0.7ms (3 / 3000) 2.4ms (4 / 3000) 1.9ms (5 / 3000) 0.7ms (6 / 3000) 0.7ms (7 / 3000) 3.2ms ( 8 / 3000) 2.1ms (9 / 3000) 0.7ms (10 / 3000) 0.7ms (11 / 3000) 0.7ms (12 / 3000) 0.7ms (13 / 3000) 0.7ms ... (2995 / 3000) 0.6毫秒 (2996 / 3000) 0.5 毫秒 (2997 / 3000) 0.6 毫秒 (2998 / 3000) 0.7 毫秒 (2999 / 3000) 0.5 毫秒 (3000 / 3000) 0.5 毫秒
但如果我不这样做,我会得到这个:
(1 / 3000) 1.5ms (2 / 3000) 0.6ms (3 / 3000) 6.6ms (4 / 3000) 2.3ms (5 / 3000) 1.3ms (6 / 3000) 1.2ms (7 / 3000) 3.7ms ( 8 / 3000) 2.3ms (9 / 3000) 1.4ms (10 / 3000) 1.3ms (11 / 3000) 1.3ms (12 / 3000) 1.5ms (13 / 3000) 1.2ms ... (2995 / 3000) 14.2毫秒 (2996 / 3000) 14.3 毫秒 (2997 / 3000) 13.8 毫秒 (2998 / 3000) 13.9 毫秒 (2999 / 3000) 14.2 毫秒 (3000 / 3000) 14.7 毫秒
这就是这个糟糕的方法的样子:
public function setName($name)
{
/*
I've deleted the usefull stuff like writing into a database
to track down the problem. But nothing changed in the behavior.
*/
}
我没有想法……不要问未设置的问题。如果新物体之后没有被破坏,它们也会产生同样的影响。
PHP 版本:5.3.2-1ubuntu4.20(这是我唯一可以使用的版本。我无法升级/更新。在 Plesk 下安装更新版本非常困难,我这可能无法解决我的问题。)
谢谢 :)