我们有一个生产 Linux、Apache、PostgreSQL、PHP 设置,它突然开始在我们的应用程序中的多个点以及看似随机的时间间隔吐出这个错误。生产中的代码已经有 7 周没有更新了,该更新是对 PHP 5.3 的升级(为了兼容性而进行了相关的代码更改)。
我昨天重新启动了 Apache,错误似乎不那么频繁了,但又重新启动了(并且变得很规律)。我昨天也禁用了 APC 模块,这似乎工作得很好,但现在错误又开始了。
我很困惑,因为代码没有改变,错误出现在奇怪的地方,例如
function __destruct() {
if ($this->startTransaction) <<< exception here
$this->connection->commitTransaction();
}
if (!is_null($this->timestamp)) { << exception here, timestamp is a private variable
如果 $this 被对象本身调用,它怎么可能是非对象?
这些错误突然出现的原因可能是什么?这是来自的内存统计信息top
:
Cpu(s): 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 6285148k total, 5794020k used, 491128k free, 332644k buffers
Swap: 1048568k total, 764k used, 1047804k free, 4671488k cached