gpt4 book ai didi

php - PHP将变量传递给register_shutdown_function- fatal error 处理程序

转载 作者:行者123 更新时间:2023-12-03 07:54:14 25 4
gpt4 key购买 nike

我知道这不是正确的错误处理,但是有必要解决我的问题。我正在运行一个脚本,该脚本在多个小时内循环分析数据,因此我创建了一个日志,记录了脚本在各个时刻发生的情况,以确保正确处理所有内容。我所有的日志都保存在与.php文件不同的文件夹中。我正在记录和记录大量信息。但是,所有与日志文件的连接都极大地减慢了我的程序的速度。相反,我有一个全局的$ write变量,我只是追加了它。为了加快我的程序的速度,我只想在每个循环的结尾添加一次$ write附加我的日志文件。问题是我为程序设置了一个max_execution_time,如果它在循环完成之前就死了,则该循环的所有日志都会丢失。作为我的register_shutdown_function()的一部分,我想登录$ write。

这是我所拥有的:

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);
}
}

问题是我收到此错误消息:
警告:
file_put_contents(../../resultLogs/log.txt):无法打开流:第64行的C:\ www \ php \ data_utils \ program.php中没有此类文件或目录

请注意,$ file在程序的其余部分都可以正常工作...请帮助!

最佳答案

参见docs:

Working directory of the script can change inside the shutdown function under some web servers, e.g. Apache.



因此,请务必在执行此操作时使用绝对路径,即
file_put_contents('<absolute-path-to>/resultLogs/log.txt', $write, FILE_APPEND);

当您写到“我的所有日​​志都保存在与.php文件不同的文件夹中”时,我想您的问题是,相对于 $file文件,您拥有的 .php常量,但是目录在发生错误时更改。

关于php - PHP将变量传递给register_shutdown_function- fatal error 处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30358779/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com