
本文介绍在 codeigniter 框架中,于控制器方法执行时自动将当前时间戳追加保存至指定文本文件的完整实现方案,涵盖路径处理、文件写入安全性和时间格式优化等关键细节。
本文介绍在 codeigniter 框架中,于控制器方法执行时自动将当前时间戳追加保存至指定文本文件的完整实现方案,涵盖路径处理、文件写入安全性和时间格式优化等关键细节。
在 CodeIgniter 应用中,常需记录某项操作(如数据更新、定时任务触发)的发生时间。以 updateData() 方法为例,我们希望每次调用该方法时,都将精确到秒的时间戳追加写入一个日志文本文件。以下是推荐的健壮实现方式:
✅ 正确写法(含错误处理与路径规范)
public function updateData()
{
// 1. 使用 CodeIgniter 的 WRITEPATH 常量确保可写路径(推荐)
$log_path = WRITEPATH . 'logs/'; // 自动指向 application/writable/logs/
$file_name = 'timestamp.log';
$full_path = $log_path . $file_name;
// 2. 确保目录存在(避免因目录缺失导致写入失败)
if (!is_dir($log_path)) {
mkdir($log_path, 0755, true);
}
// 3. 生成带可读格式的时间戳(优于 raw time())
$timestamp = date('Y-m-d H:i:s') . PHP_EOL;
// 4. 安全写入:使用 file_put_contents() 替代 fopen/fwrite(更简洁且自动处理资源)
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 timestamp. Please check file permissions.');
return;
}
// 5. 可选:后续业务逻辑(如数据库更新)
// $this->your_model->update();
}
⚠️ 注意事项
- 路径安全:避免硬编码绝对路径(如 /docs/),优先使用 CodeIgniter 内置常量(如 WRITEPATH),确保跨环境兼容;
- 权限控制:确保 writable/logs/ 目录对 Web 服务器用户(如 www-data 或 apache)具有写权限(Linux 下常用 chmod 755 或 775);
- 并发安全:使用 FILE_APPEND | LOCK_EX 标志可防止多请求同时写入导致内容错乱;
- 时间格式:date('Y-m-d H:i:s') 比 time() 更具可读性,便于人工排查;若需毫秒级精度,可结合 microtime(true);
- 错误兜底:务必检查写入结果并记录错误日志,避免静默失败。
? 扩展建议
- 若需长期维护,可封装为独立服务类(如 TimestampLogger),提升复用性;
- 对高频调用场景,建议改用数据库日志表或专用日志系统(如 Monolog + FileHandler);
- 生产环境应禁用 show_error(),改用统一异常处理机制。
通过以上实现,updateData() 每次执行均会可靠、安全地追加一条结构化时间记录,为运维审计与行为追踪提供坚实基础。










