【问题标题】:Read from a textfile and put it in a array and display each line every 12 hour从文本文件中读取并将其放入数组中并每 12 小时显示每一行
【发布时间】:2014-11-03 15:10:02
【问题描述】:

所以我有一个网站,我想在其中显示文本文件中的单词。 我已经完成了脚本应该从中读取的文本文件,但它显示了整个文本文件:S

<?

$filename = "arraytext.txt";
$arr = file($filename);
foreach($arr as $line){
    print $line . "<br />";
}

?>

`

它一次显示整个文本文件。我只希望它显示 1 行,这是第一个词。 我做错了什么?

【问题讨论】:

  • foreach 将遍历所有行。也许你想阅读Quickest Way to Read First Line from File
  • $f = fopen($file, 'r'); $line = fgets($f); fclose($f);这只会读一行吗?
  • 应该的。但是自己测试一下:)

标签: php arrays text


【解决方案1】:

要逐行读取文件,必须使用 fgets() 函数
这是一个例子:

$file = fopen("test.txt","r");

while(! feof($file))
  {
  echo fgets($file). "<br />";
  }

fclose($file);

【讨论】:

    【解决方案2】:
    <?
      $filename = "arraytext.txt";
      $f = fopen($filename, 'r');
      echo fgets($f);
      fclose($f);
    ?>
    

    要每 12 小时运行一次,请将此行添加到您的“/etc/crontab”文件中(例如):

    00 11,23 * * * root php path-to-your-script/name-of-your-script.php
    

    更新:在您发表评论后,我想我更好地理解了您的问题(抱歉)。
    忘记“crontab”的东西......
    做吧:

    <?
      $filename = "arraytext.txt";
      $arr = file($filename);
      foreach ($arr as $line) {
        print $line . "<br />";
        sleep(60 * 60 * 12); // (60 * 60) * 12 seconds sums up to 12 hours
      }
    ?>
    

    但请注意,在“web”模式下运行的 php(与“cli”模式相反)具有严格的执行时间限制(请参阅 http://php.net/manual/en/function.set-time-limit.php)。
    我想你在网络界面上使用它,因为在你的问题中你使用了 html 标签&lt;br /&gt;...

    注意:抱歉,但是为什么你想每 12 小时写一行??? :-)

    【讨论】:

    • 很棒的兄弟谢谢你。它向我显示了第一行。我应该如何让它能够每 12 小时读取一次新行?可以通过cron作业来完成吗?
    • 你不需要说谢谢,就这样。只需接受最有用的答案... :-)
    • 所以每次运行它都会自动更新到下一行?
    • cron 作业不工作。它不会将文本更改为下一行:S
    • 是的,我查了 foreach,但现在是你写的。所以 sleep 会让一切都睡到 12 小时过去,然后它会换线到下一个?由于我的 arraytext.txt 与
      (此评论未显示)for ex First Second Third 等
    猜你喜欢
    • 1970-01-01
    • 2015-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多