我正在为一位在共享主机上运行的客户编写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,但这不应该成为问题,因为我从未打开过一个以上的文件。有什么想法吗?