2013-08-02 2 views
0

우리는 갑자기 응용 프로그램의 여러 지점에서 임의로 흩어지기 시작한 프로덕션 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 
+0

'startTransaction'의 코드는 무엇입니까? –

+1

이것이 이미 파괴되었는지 확인하십시오. –

+0

startTransaction은 개인 속성입니다. 코드에없는 모든 종류의 장소에서 오류가 발생합니다. 즉, 타임 스탬프가 다른 개인 속성 인 다른 객체에 $ this-> timestamp가 표시됩니다. 이 물체가 단지 기억에서 사라지는 것과 같습니다. – Dave

답변

0

https://bugs.php.net/bug.php?id=50027에 의해 발생 및 이후 버전에 PHP를 업그레이드하여 해결되었습니다 (5.3.4에서 수정 된 버그, 5.3.3 데비안에서 패키지 반면).

관련 문제