【问题标题】:php update array every 2 secondsphp每2秒更新一次数组
【发布时间】:2017-03-12 19:29:59
【问题描述】:

我有一个包含动态文件的文件夹,每 2 秒就有一个新文件 我想每 2 秒检查一次是否有新文件 如果有新文件,将它们添加到数组中

每个文件大小约1m

我开始获取文件,然后开始逐个文件地读取它, 我需要在读取文件时更新数组,只要浏览器关闭就继续读取和更新

我使用那个代码

if ($files = glob('/files/'.$video_id.'*.ts')) {
$files = array_slice($files, -6, 6, true);
    foreach ($files as &$file) {
        if(!file_exists($file)) {
        unset($files[$file]);
        asort($files);
        reset($files);
        }
        $fp = @fopen($file, "r");
        echo fread($fp, filesize($file));
            $newfiles = glob('/files/'.video_id.'*.ts');
            $newfiles = array_slice($newfiles, -6, 6, true);
                foreach ($newfiles as &$newfile) {
                    if(!in_array($newfile, $files, true)){
                    array_push($files, $newfile);
                    asort($files);
                    reset($files);
                    }
                }
    }
}

【问题讨论】:

  • 问题是什么?
  • 您想每两秒读取、解析和处理所有个文件,所有MB大小?
  • 浏览器读取文件时我需要更新数组,只要浏览器关闭就更新
  • 您之前发布的内容不相似/相同吗? stackoverflow.com/q/42717575/1415724
  • 我需要每 2 秒运行一次此代码来更新数组 $newfiles = array_slice($newfiles, -6, 6, true); foreach ($newfiles as &$newfile) { if(!in_array($newfile, $files, true)){ array_push($files, $newfile);分类($文件);重置($文件); } }

标签: php arrays file


【解决方案1】:

首先你必须明白,当字符串存储在服务器内存中时,php 字符串不能在 php 内部刷新。在某些情况下,你可以在 php 脚本的顶部使用:

header('Refresh: 2'); 

但是!即使您从其他文件中包含它,它也会刷新您的整个页面。或者你把它放在一个特定的地方。 header() 用于重新加载或重定向整个页面。这对用户来说很烦人

☼ 解决方案: 避免使用称为 (Ajax) 的东西来处理这种情况。示例:


  • AJAX 中有很多选择可以处理您的情况,其中一些:
    ....... ..................................................... ................................................
  • (JavaScript and xml | html)
  • (jQuery and xml | html)

✔ - 使用 (Ajax) 致电您的 (php script) :
.................................................. ..................................................... .....................

  • 1 - 在您的脚本目录中创建一个新建 php 文件
    并将其命名为示例:( Request.php ) 然后在其中添加您的(要重新加载的php代码)


  • 2 - 现在在您的索引页面或视频页面“随便”添加:

    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
    

然后阅读这篇文章以了解 Ajax 的完整基本思想: https://en.wikipedia.org/wiki/Ajax_(programming)

其他最简单的方法是 throw(JQuery 加载):

    <script type="text/javascript">
      setInterval(function(){ 
           $('#Request').load('Request.php'); 
      },  2000);

    </script>

然后将其添加到您的 html 区域(您希望代码显示的位置):

    <div id="Request"> your html video container here </div>

我看到你试图调用一些视频链接所以改变:
&gt; your html video container here &lt; 支持您的项目。
重要的是你了解大意。
我们无法为您完成整个家庭作业的其他方式。
需要更改以适应您的脚本的几件事是您的工作。

注意:我们在 (javascript) 中使用的“2000”值是以毫秒为单位的时间,即 2 秒,如果您想添加,下次可以更改更多时间或更少时间。记住(1000=1 秒),然后在此基础上自己做剩下的数学,享受吧。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-07
    • 1970-01-01
    • 2015-04-16
    • 2017-11-27
    • 2012-01-09
    • 1970-01-01
    相关资源
    最近更新 更多