如何读取在服务器中不断更新到Web文本框的实时日志文件

时间:2015-05-04 07:18:24

标签: php

  

日志文件将采用记事本格式,其值将如下所示 11.23445646,56.3456578954   10.23445646,26.3456578954   16.23445646,-46.3456578954   我打算从服务器到网站文本框中获取数据,其中第一个值我标记为斜体,值将在几秒钟后更新,更新值将首先出现。我尝试了一些PHP示例,但没有在下面的文本框中获取我需要获取的值...例如:x = 11.23445646,y = 56.3456578954,请指导我

Longtitude <input id="x" type="number" value = "" onkeyup="updateMarker('x')">

Latitude <input id="y" type="number"value = "" onkeyup="updateMarker('y')">

2 个答案:

答案 0 :(得分:0)

PHP并不真正进行“实时”页面更新,因为通常当Web浏览器(或其他用户代理)在下载页面后加载网页时,PHP已经完成,无法触及已经存在的内容客户端。

最好的方法可能是使用JavaScript AJAX调用定期从PHP脚本加载更新的值,然后更新页面上的值。

或者如果它是一个非常小的页面(以字节大小),你可以让它自动重新加载整个页面(使用更新的值),如果这对你来说不是问题。

在任何情况下,每次调用PHP脚本时,它只会以读取模式打开文件,只读取文件开头的最新值并返回它们。见fread()。或者file_get_contents()file()可能更容易,只需阅读第一行。

AJAX是一个更大的主题,我目前没有时间来解释使用JavaScript更新页面的整个过程。谷歌是你的朋友。

答案 1 :(得分:0)

PHP通常不会以您期望的方式支持实时连接,您必须通过重复的AJAX请求来模拟它。怎么样?例如每秒或每两秒钟。

首先必须使用jQuery库在HTML中编写ajax:

每秒发送一次请求:

 var url  = "url_to_you_file";
    var textarea_id = "#textarea";

setInterval(function(){

   $.ajax({
     url : "site.com/get-file-logs.php",
     type : "POST",
     success : function(data){
      $(".textarea").html(data);

     }

   });
}, 1000); 

然后在PHP文件中你会写这个:

$file_path = "path_to_your_file";
$file_content = file_get_contents($file_path);
echo $file_content;

上面的示例获取文件内容并将其发送回您的浏览器。您可能希望以某种方式处理它;然后改变你的方法一点点。因为当您尝试从服务器获取数据以便由Javascript操作时,您必须始终坚持使用JSON格式。