0

我有一个带有新对象的小循环。

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 下安装更新版本非常困难,我这可能无法解决我的问题。)

谢谢 :)

4

0 回答 0