首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在PHP中自动删除日志文件

在PHP中自动删除日志文件
EN

Stack Overflow用户
提问于 2012-11-12 17:00:01
回答 6查看 9.3K关注 0票数 1

可能重复: 从webserver自动删除文件

我正在使用file_put_contents()将一些XML内容记录到文本文件中,以防需要它进行调试。

如何在一定时间后删除此文件?

我在日志文件夹中有一个限制性的.htaccess,但是我不想把信息(会有客户的地址等)放在网上很长时间。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2012-11-12 17:11:06

好吧,虽然你同意其他人的观点,你在工作中使用了错误的工具,但你的问题很简单。所以你来吧:

  • 编写将从命令行运行的PHP脚本
  • 使用像cron或windows调度任务这样的工具
  • 每分钟/五分钟/等调用cron

您的脚本非常简单:

代码语言:javascript
复制
<?php
   $dh = opendir(PATH_TO_DIRECTORY);
   while( ($file = readdir($dh)) !== false ) {
      if( !preg_match('/^[.]/', $file) ) {  // do some sort of filtering on files
         $path = PATH_TO_DIRECTORY . DIRECTORY_SEPARATOR . $file;
         if( filemtime($path) < strtotime('-1 hour') ) {  // check how long it's been around
            unlink($path);  // remove it
         }
      }
   }

如果您在Linux上工作,您也可以使用find,但是我看到@Rawkode在我写这篇文章时发布了这个消息,所以我会给您留下他对这个解决方案的优雅回答。

票数 5
EN

Stack Overflow用户

发布于 2012-11-12 17:03:39

您应该使用php.ini函数,它将尊重日志()设置。

代码语言:javascript
复制
error_log('Send to PHP error log');
error_log('Sent to my custom log', 3, "/var/tmp/my-errors.log");
票数 4
EN

Stack Overflow用户

发布于 2012-11-12 17:08:39

您可以使用内置函数- filectime -跟踪日志文件的创建日期,然后删除那些足够老到可以删除的日志文件。

此代码搜索日志目录并删除2周前的日志。

代码语言:javascript
复制
$logs = opendir('logs');

while (($log = readdir($logs)) !== false)
{
    if ($log == '.' || $log == '..')
        continue;

    if (filectime('logs/'.$log) <= time() - 14 * 24 * 60 * 60)
    {
        unlink('logs/'.$log);
    }
}

closedir($logs);
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13347988

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档