공유 호스팅에서 실행되는 클라이언트에 대해 PHP CLI 스크립트를 작성하고 있습니다. 이 같은 간단한 기능을 사용하여 파일에 기록합니다스트림을 열지 못했습니다 : 열려있는 파일이 너무 많습니다.
function log_entry($msg) {
global $log_file, $log_handle;
$msg = "[".date('Y-m-d H:i:s')."] ".$msg."\n";
echo $msg;
$log_handle = fopen($log_file, 'a');
fwrite($log_handle, $msg);
}
그리고이 오류를 얻을 :
PHP Warning: fopen(./logs/sync.20130410.log)
[<a href='function.fopen'>function.fopen</a>]: failed to open stream:
Too many open files in ./functions.php on line 61
나도 같은 핸들을 사용에 문제가있는 줄 알았는데, 그래서 그것을 변경 :
function log_entry($msg) {
global $log_file;
$msg = "[".date('Y-m-d H:i:s')."] ".$msg."\n";
echo $msg;
$log_handle = fopen($log_file, 'a');
fwrite($log_handle, $msg);
fclose($log_handle);
}
하지만 작동하지 않았습니다. 오류가 항상 같은 로그 라인에 표시됩니다. 내가 ulimit -n
을 할 때 나는 1024 개를 얻지 만, 하나 이상의 파일을 결코 열지 않기 때문에 문제가되어서는 안된다. 아이디어?
내 공유 호스팅 공급자와 파일 설명자 한도로 실행 – Zak
하지만 한 번에 하나씩 두 기능을 모두 사용하지 않습니까? 첫 번째 것은 완전한 실행을 통해 하나만 사용하고 두 번째 것은 한 줄에 하나씩 사용하도록되어 있습니다 ... 아니면 다르게 작동합니까? – Mauro
http://serverfault.com/questions/195334/apache-crashes-every-night-due-to-too-many-open-files – zod