
本文介绍在 CodeIgniter 框架中,于控制器方法(如 updateData())执行时,将当前时间戳追加写入指定文本文件的完整实现方案,包含路径处理、文件写入安全实践及常见注意事项。
本文介绍在 codeigniter 框架中,于控制器方法(如 `updatedata()`)执行时,将当前时间戳追加写入指定文本文件的完整实现方案,包含路径处理、文件写入安全实践及常见注意事项。
在 CodeIgniter 应用中,若需审计函数调用时间、监控任务执行频率或做简易日志追踪,可在关键方法内嵌入时间戳写入逻辑。以下是一个健壮、可直接复用的实现方式:
✅ 推荐实现(含错误处理与路径安全)
public function updateData()
{
// 1. 定义日志文件路径(推荐使用 CodeIgniter 的 FCPATH 或 WRITEPATH)
$log_path = FCPATH . 'logs/'; // 确保目录存在且 Web 可写(如 /var/www/html/logs/)
$file_name = 'function_timestamps.txt';
$full_path = $log_path . $file_name;
// 2. 确保日志目录存在(避免 fopen 失败)
if (!is_dir($log_path)) {
mkdir($log_path, 0755, true);
}
// 3. 生成格式化时间戳(可读性强,建议替代 time())
$timestamp = date('Y-m-d H:i:s') . ' - updateData() called' . PHP_EOL;
// 4. 安全写入:使用 file_put_contents(自动处理打开/关闭,支持追加)
if (file_put_contents($full_path, $timestamp, FILE_APPEND | LOCK_EX) === false) {
log_message('error', 'Failed to write timestamp to ' . $full_path);
show_error('Unable to log execution time.');
}
}
⚠️ 关键注意事项
- 路径安全性:避免硬编码绝对路径(如 /docs/),优先使用 FCPATH(指向 index.php 所在目录)或 WRITEPATH(CodeIgniter 4 中的可写目录),防止因部署环境差异导致写入失败。
- 权限问题:确保 Web 服务器用户(如 www-data 或 apache)对目标目录具有写权限,否则 fopen 或 file_put_contents 将静默失败。
- 并发安全:使用 FILE_APPEND | LOCK_EX 标志可防止多请求同时写入造成内容错乱(如时间戳挤在同一行)。
- 性能考量:频繁写入小文件对高并发场景不友好;如需生产级日志,建议接入 Monolog 或数据库日志表。
- 调试辅助:可配合 log_message('info', ...) 同时写入 CodeIgniter 原生日志,便于统一排查。
? 示例输出效果(logs/function_timestamps.txt)
2024-06-15 14:22:08 - updateData() called 2024-06-15 14:25:33 - updateData() called 2024-06-15 14:28:11 - updateData() called
通过以上方式,你不仅能准确记录每次函数执行时间,还能保障代码的可移植性、健壮性与可维护性。










