【问题标题】:PHP Update script.. filemtime?PHP更新脚本..文件时间?
【发布时间】:2013-08-14 07:32:53
【问题描述】:

我是 PHP 的初学者,我正在尝试制作一个脚本,该脚本在一个文件中显示,我可以在我的索引页面的侧面部分包含上次更新的日期,并在其下方加上一个列表我更新了哪些其他页面(按更新顺序)。举个例子,如果我最后一次更新是星期二,我只编辑了我的新闻和索引页面,它会说

2013 年 8 月 6 日 - 主页更新。 - 新闻头条已更新。

然后在它下面会显示其他最新更新.. 像这样:

2013 年 8 月 6 日 - 主页更新。 - 新闻头条已更新。

2013 年 8 月 5 日 - 员工更新。

2013 年 8 月 2 日 - 主页更新。 - 论坛更新。 - 加入页面已更新。

我还希望能够设置可以显示多少更新的限制。我有一个朋友几年前就有这个脚本,我记得他是通过一个 .txt 文件和 CHMOD txt 文件来完成的有书面权限。然后他们是updates.php,在我想生成更新状态的每个页面上,我都会在文件顶部包含几行脚本。另外,我会列出页面名称以及我希望它显示的内容txt 文件或更新文件,如 index.php > 主页已更新...但是我与他失去了联系,他们无法找到它。我试了一下,得到了:

  <?php

  $pages = array(
  'Main Page' => 'index3.php',
  'Staff' => 'staff.php',
  'News Headlines' => 'news.php',
  );
$list = array();

 foreach($pages as $page => $file) {
  $date = filemtime($file);    
 if(!isset($list[$date])) { $list[$date] = array(); }
  array_push($list[$date], $page);
  }
 krsort($list);

 foreach($list as $date => $pages) {
  echo date('F j, Y', $date) . "<br />\n";
   foreach($pages as $page) {
    echo "- $page Updated<br />\n";
    }
      }
   ?>

但这不能正常工作,因为即使我在同一天更新两个文件,它也会开始一个新的日期......无论如何,我只是想知道是否有人知道如何制作这个脚本?我迫切需要得到它,所以任何帮助都会很棒..我真的不确定如何去做,并且已经到处寻找想法......谢谢大家,我希望能听到回音:)

【问题讨论】:

    标签: php


    【解决方案1】:

    filemtime() 将返回一个 Unix 时间戳,因此同一天的两次更新仍然是两个不同的时间戳。与其在回显时仅使用 date() 格式化日期,不如在将其保存到 $date 变量之前对其进行格式化:

    foreach($pages as $page => $file) {
      $date = date('Y/m/d', filemtime($file));
    

    然后当你打印出来时:

    echo date('F j, Y', strtotime($date)) . "<br />\n";
    

    【讨论】:

    • 感谢您的回复!我不一定必须使用 filemtime(),我只是认为因为它似乎适合使用,但我不希望时间只显示日期,其中包含当天修改但经过的文件列表我给的名字,而不是他们的文件名。我的错,也许我应该把整个 filemtime() 都放在外面。不管怎样,我会试试你说的,谢谢!
    • Kodepup 非常感谢您的回复..我仍然遇到一些问题,我从 7 月 31 日开始更新,这似乎仍然是我希望生成的顶级更新按日期顺序。此外,当我在上次更新后的第二天更新文件时,它会删除日期前几天的更新并将其添加到新日期...
    • 糟糕,我忘了说明您希望按日期排序。我在答案中更新了代码 sn-ps。由于date() 将日期作为字符串返回,因此它也作为字符串排序。通过将其格式化为可以按时间顺序排序的方式,即使是字符串,您可以按顺序获取它们,然后只需重新格式化即可显示。
    • 我仍然遇到问题,如果我日复一日地更新同一个文件,它会将该文件从前一天的更新中取出并将其放在新日期下,我确实希望它将其放在修改的新日期下,但也保留在其他日期下。另外,当我从在线表单(管理部分)添加新闻文章时,它不会生成更新。也许尝试使用 MySQL 和 php 会更充分?还是他们仍然是通过更改我拥有的当前脚本的一种方式?再次感谢您的帮助 kodepup。
    • 如果您不想只显示文件的最新修改,filemtime() 是不够的。您可以保留一个可以读取以供显示的更改日志文件,也可以跟踪数据库中的更改。如果您习惯使用 cron 作业,您可以修改现有代码并每天调用一次以仅获取当天的所有更新并将它们保存在任一位置。如果没有,我会说在您进行更改时手动更新日志文件,将其用于显示。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-29
    • 1970-01-01
    • 1970-01-01
    • 2012-09-25
    • 1970-01-01
    相关资源
    最近更新 更多