PHP 스크립트의 일반 "Kilted" 오류
저는 루프를 사용하여 많은 데이터베이스 작업을 수행하는 PHP 스크립트를 호출하는 CRON 작업을 수행하고 있습니다.
데이터 세트를 제한하면 정상적으로 실행되지만 전체 데이터 세트에 대해 실행하면 스크립트에 오류가 발생하여 다음 메시지가 나타납니다.
Killed
set_time_limit은 (0)이고 memory_limit은 (-1)입니다.
코드 섹션은 다음과 같습니다.
echo "I'm in _getMemberDemographicAttrs\n";
if (! empty ( $member_id )) {
$query .= ' AND member_id = ' . $member_id;
}
$result = mysql_query ( $query, $this->_db );
if ($result) {
while ( $rule = mysql_fetch_assoc ( $result ) ) {
$rules [] = $rule;
}
if (! empty ( $rules )) {
mysql_free_result ( $result );
echo "I'm leaving _getMemberDemographicAttrs\n";
return $rules;
}
}
출력은 다음과 같습니다.
I'm in _getMemberDemographicAttrs<br/>
I'm leaving _getMemberDemographicAttrs<br/>
I'm in _getMemberDemographicAttrs<br/>
I'm leaving _getMemberDemographicAttrs<br/>
I'm in _getMemberDemographicAttrs<br/>
Killed
이런 일반적인 건 본 적이 없어Killed
에러 메세지가 표시됩니다만, 무엇이 원인으로 에러가 발생했는지 궁금하네요.
Linux OOM(Out-of-Memory) 킬러를 트리거하고 있을 수 있습니다.확인.dmesg
메시지를 남겨주세요.이런 일이 일어날 때 어떤 과정이 죽었는지 알려준다.
간단한 재현 방법Killed
에러:
이 에러를 재현할 수 있었습니다.Ubuntu 12.10
와 함께PHP 5.3.10
.
다음과 같은 PHP 스크립트를 만듭니다.m.php
저장:
<?php
function repeat(){
repeat();
}
repeat();
?>
실행:
el@apollo:~/foo$ php m.php
Killed
이 프로그램은 CPU를 약 15초간 100% 사용하고 나서, 에 의해 정지합니다.Killed
메세지.보다dmesg | grep php
단서가 있습니다.
el@apollo:~/foo$ dmesg | grep php
[2387779.707894] Out of memory: Kill process 2114 (php) score 868 or
sacrifice child
그래서 내 경우 무한 루프 때문에 메모리가 부족하여 PHP 프로그램이 중지되고 "Killed"라고 인쇄되었습니다.
솔루션:
- 이 PHP 프로그램에서 사용할 수 있는 RAM 용량 또는 메모리 양을 늘립니다.
- 문제를 순차적으로 작동하는 작은 덩어리로 나눕니다.
- 메모리 요건이 작거나 재귀에 영향을 받지 않도록 프로그램을 다시 작성합니다.
CloudLinux, PHP 7.1의 경우, 두 프로세스가 잠금 없이 동일한 파일을 읽고 쓸 때 발생했습니다.
언급URL : https://stackoverflow.com/questions/952868/generic-killed-error-in-php-script
'programing' 카테고리의 다른 글
JSF vs 페이스렛 vs JSP (0) | 2022.12.05 |
---|---|
학교 프로젝트를 위한 로컬 네트워크 외부 데이터베이스 액세스 (0) | 2022.11.26 |
Python의 정적 클래스 변수 및 메서드 (0) | 2022.11.26 |
문자열이 Unicode인지 ASCII인지 확인하려면 어떻게 해야 하나요? (0) | 2022.11.26 |
VARCHAR 필드의 문자열 발생 횟수를 카운트하시겠습니까? (0) | 2022.11.26 |