우리는 갑자기 응용 프로그램의 여러 지점에서 임의로 흩어지기 시작한 프로덕션 Linux, Apache, PostgreSQL, PHP 설치가 있습니다. 간격. 프로덕션의 코드는 7 주 동안 업데이트되지 않았으며, PHP 5.3 (호환성을 위해 관련 코드가 변경됨)으로 업그레이드되었습니다."객체가 아닌 객체의 속성을 얻으려는 시도"가 갑작스럽게 나타납니다.
나는 어제 아파치를 재시작했는데 에러는 덜 자주 발생하지만 다시 시작되었다. 어제도 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
'startTransaction'의 코드는 무엇입니까? –
이것이 이미 파괴되었는지 확인하십시오. –
startTransaction은 개인 속성입니다. 코드에없는 모든 종류의 장소에서 오류가 발생합니다. 즉, 타임 스탬프가 다른 개인 속성 인 다른 객체에 $ this-> timestamp가 표시됩니다. 이 물체가 단지 기억에서 사라지는 것과 같습니다. – Dave