2016-01-10 39 views
0

我创建了一个使用PHP的后台进程,但我打算用while(1)来测试它,无限地执行它。给出结果,但重复的结果,如:PHP无限循环结果没有重复,但更新

 
Result 1 
text: Hi! 
Result 2 
text: Hello! 
Result 1 
text: Hi! 
Result 2 
text: Hello! 

我不知道做的是,它不会重复,但是当有新的变化,如价值也将被更新:

初始运行:

 
Result 1 
text: Hi! 
Result 2 
text: Hello! 

当有变化:

 
Result 1 
text: Hello! 
Result 2 
text: Hello! 

上面的场景是只是例子,但脚本连接到数据库。

更新:我的代码。

<?php 

    @ini_set("output_buffering", "Off"); 
    @ini_set('implicit_flush', 1); 
    @ini_set('zlib.output_compression', 0); 
    @ini_set('max_execution_time',1200); 

    require("database.php"); 

    while(1){ 
     $sqlReports = "SELECT * FROM reports WHERE reports.process = 'F'"; 

     $resReports = odbc_exec($conn,$sqlReports); 

     while($reports = odbc_fetch_array($resReports)) 
     { 
      echo $reports['reportnum']. "</br>"; 

      $sqlStations = "SELECT * FROM stations"; 

      $resStations = odbc_exec($conn,$sqlStations); 

      while($stations = odbc_fetch_array($resStations)) 
      { 
       echo $stations['name']. "</br>"; 
      } 

      sleep(1); 
      flush(); 
      ob_flush();  
     } 
    } 

?> 

结果代码:

 
1 
station1 
station2 
station3 
2 
station1 
station2 
station3 
3 
station1 
station2 
station3 
1 
station1 
station2 
station3 
2 
station1 
station2 
station3 
... 

我想的是,它不会再次显示显示的号码,但它会更新,如果有喜欢的变化:在循环过程

没有更新:

 
1 
station1 
station2 
station3 
2 
station1 
station2 
station3 
3 
station1 
station2 
station3 

在循环过程更新时间:

 
1 
station1 
station2 
station5 
2 
station6 
station2 
station3 
3 
station7 
station8 
station9 
+0

你能证明你所尝试过的吗?一些代码? –

+0

请包括您到目前为止尝试过的代码 – Cyval

+0

从哪里得到这些数据? D b?你为什么使用while循环而不是cronjob? – Rizier123

回答

0

如果我们看看你期待的输出,如果它和所有脚本的脚本都有相同的站点,那么你会跳过站点部分。

要实现这样想你

要么需要站的状态存储到临时存储,当你正在运行脚本再次,你可以看看到临时存储和比较,如果有变化或没有下一次,这样你就可以把你的决定包括在内或者不包括在内。

您可以在车站级的一些标志指示站条目是新的特定报表,如果你发现任何这样的新站可以包括其他站,你可以跳过它。

+0

更改依赖于数据库。并且它的原始代码是数据将被存储在一个临时表中,而我并未将其包含在上面的示例中。 – BLNK

+0

我想知道的是如何在视图上呈现它,就像我上面发布的那样?那么如果在纯php中不可行,那么我将继续使用settimeout中的ajax:P – BLNK

+0

如果将数据存储在临时表中,您现在可以获取与先前运行中存储的报告相关的工作站数据,并且还可以将所有工作站数据通过您在_stations_表上的查询,现在您可以比较两组数据并做出决定。 –