PHP传递变量以注册函数-致命错误处理程序
我知道这不是正确的错误处理,但它是解决我的问题所必需的。我正在运行一个脚本,该脚本会在数小时内解析循环中的数据,因此我会创建一个日志,记录脚本中不同时刻发生的事情,以确保所有事情都得到正确处理。我的所有日志都保存在与.php文件不同的文件夹中。我记录了大量的信息。但是,所有与日志文件的连接都极大地降低了我的程序速度。相反,我有一个全局$write变量,我只是附加它。为了加速我的程序,我只想在每个循环结束时在日志文件中附加$write。问题是我为我的程序设置了一个max_execution_time,如果它在循环完成之前就死了,那么我在该循环中的所有日志都会丢失。作为register\u shutdown\u函数()的一部分,我想记录$write 以下是我所拥有的:PHP传递变量以注册函数-致命错误处理程序,php,error-handling,Php,Error Handling,我知道这不是正确的错误处理,但它是解决我的问题所必需的。我正在运行一个脚本,该脚本会在数小时内解析循环中的数据,因此我会创建一个日志,记录脚本中不同时刻发生的事情,以确保所有事情都得到正确处理。我的所有日志都保存在与.php文件不同的文件夹中。我记录了大量的信息。但是,所有与日志文件的连接都极大地降低了我的程序速度。相反,我有一个全局$write变量,我只是附加它。为了加速我的程序,我只想在每个循环结束时在日志文件中附加$write。问题是我为我的程序设置了一个max_execution_tim
register_shutdown_function( "fatal_handler");
function fatal_handler() {
global $file, $write;
$errfile = "unknown file";
$errstr = "shutdown";
$errno = E_CORE_ERROR;
$errline = 0;
$error = error_get_last();
if( $error !== NULL) {
$errno = $error["type"];
$errfile = $error["file"];
$errline = $error["line"];
$errstr = $error["message"];
file_put_contents($file, "\n\nFATAL ERROR\n\n", FILE_APPEND);
file_put_contents($file, $write, FILE_APPEND);
}
}
问题是我收到以下错误消息:
警告:
文件内容(../../resultLogs/log.txt):无法打开流:第64行的C:\www\php\data\u utils\program.php中没有此类文件或目录
请注意,$file在程序的其余部分工作正常。。。救命啊 请参见:
脚本的工作目录可以在关机时更改
在某些web服务器下运行,例如Apache
因此,确保在执行此操作时使用绝对路径,即
file_put_contents('<absolute-path-to>/resultLogs/log.txt', $write, FILE_APPEND);
file\u put\u内容('/resultLogs/log.txt',$write,file\u APPEND);
正如您所写的“我的所有日志都保存在与.php文件不同的文件夹中”,我想您的问题是,您的$file
常数相对于.php
文件,但目录会在出错时更改