【问题标题】:Delete all files in directory automatically?自动删除目录中的所有文件?
【发布时间】:2013-03-06 19:17:06
【问题描述】:

如何在 PHP 中每 24 小时删除目录中的所有文件而不删除目录本身?它必须在 PHP 中,不能是 Cron Job。

您能否也提供代码背后的解释?我还在学习PHP。

谢谢!

【问题讨论】:

  • “必须在 PHP 中,不能在 PHP 中”:相当挑战....
  • 感谢@Dave 的收获。问题已被编辑。
  • 删除目录然后重新创建怎么样?您可以只删除内容,但删除批次更容易。
  • 每 24 小时没有 cron 作业?要么每 24 小时手动运行一次,要么让当天的第一个用户/访问者删除该事物。但说真的,没有 cron = 通常无法满足我的托管需求......
  • 这是给 Magento 的机会吗?

标签: php file webserver file-management


【解决方案1】:

如果不使用 PHP,则无法在 PHP 中执行此操作。对不起。

开玩笑,但如果你想这样做,你需要某种任务调度程序(如 cron)。

也就是说,您可以对您的个人计算机进行编程,使其每 24 小时向服务器发送一次请求,但您要么必须手动完成,要么在本地安排任务。

我的意思是,您需要 cron,但它不需要与 PHP 文件在同一主机上运行。

【讨论】:

    【解决方案2】:

    如果没有 cron,您将不得不将这样的代码添加到经常请求的页面中:

    $scheduledclean = strtotime("midnight"); // 00:00:00 of the current day
    $lastcleanfile = '/path/to/my/app/lastclean';
    $lastcleantime = (file_exists($lastcleanfile)) ? filemtime($lastcleanfile) : 0;
    $curtime = time();
    
    if( ($curtime > $scheduledclean) && ($lastcleantime < $scheduledclean) ) {
        touch($lastcleanfile); //touch first to prevent multiple executions
        // file cleanup code here
    }
    

    在午夜之后对页面的第一个请求时,清理将启动,但发出请求的倒霉的人可能会延迟为他们的页面提供服务,这与清理所需的时间一样长。你可以通过像shell_exec('rm -rf /path/to/dir/* &amp;');这样的后台shell命令运行清理来缓解这种情况@

    【讨论】:

      【解决方案3】:

      很久以前我做过类似的事情。这是一个糟糕的主意,但是您可以有一个文件来存储您的目录最后一次被清除的时间。每次用户访问相关页面时,在 PHP 脚本中检查该文件(您也可以检查修改时间)。如果已经足够远,请更新文件并运行您的删除脚本。

      缺点:

      • 不保证每 24 小时运行一次(也许你有一天没有访客)
      • 每天让一位用户等待更长的时间

      至于删除文件,

      function delete_contents( $dirpath ) {
          $dir = opendir( $dirpath );
          if( $dir ) {
              while( ($s = readdir( $dir )) !== false ) {
                  if( is_dir( $s ) ) {
                      delete_contents( $s );
                      rmdir( $s );
                  } else {
                      unlink( $s );
                  }
              }
              closedir( $dir );
          }
      }
      

      对此要非常小心。在粗略的服务器设置中,delete_contents('/') 将删除所有文件。

      【讨论】:

        【解决方案4】:
        1. 制作一个删除目录中所有文件的 PHP 脚本,查找函数 readdir()unlink() 删除文件。

        2. 设置 Cron Job 以每 24 小时自动运行一次脚本。您必须如何执行此操作完全取决于您的主机。您还可以使用以下网站:http://www.google.nl/search?q=cronjobs+webservice

        祝你好运!

        【讨论】:

          猜你喜欢
          • 2010-11-05
          • 2014-04-06
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-06-11
          相关资源
          最近更新 更多