2016-11-07 131 views
0

如何在Web服务器上执行PHP脚本时显示该脚本的执行结果(代码有很多卷发,需要大约30分钟才能完成) )。我有两台服务器,一台在它被调用时显示每个“回显”,但在另一台服务器上显示30分钟后所有脚本完全执行。两个服务器上运行Apache,PHP 5.6 代码:执行PHP脚本时显示结果

<?php 
error_reporting('E_ALL'); 
ini_set('error_reporting', 'E_ALL'); 
set_time_limit (2); 

$i=0; 
$handle = fopen("filmyNasze.txt", "r"); 
if ($handle) { 
    while (($line = fgets($handle)) !== false) { 
     $line = explode("##", $line); 
     $nazwafilmu = trim($line[0]); 
     $linkfilmu = trim($line[1]); 
     $linkfilmu = 'http://xxx.pl' . $linkfilmu; 
     $ch = curl_init(); 
     curl_setopt($ch, CURLOPT_TIMEOUT, 10); 
     curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
     curl_setopt($ch, CURLOPT_URL, $linkfilmu); 
     curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 
     curl_setopt($ch, CURLOPT_HTTPHEADER, array("Cookie: cda.player=html5")); 
     curl_exec($ch); 
     $result = curl_exec($ch); 
     curl_close($ch); 
     libxml_use_internal_errors(true); 
     $doc2 = new DOMDocument(); 
     $doc2->loadHTML($result); 
     $divid = str_replace('/video/', '', trim($line[1])); 
     foreach($doc2->getElementsByTagName('div') as $div) { 
      if($div->getAttribute('id') == 'mediaplayer' . $divid) { 
       $array = json_decode($div->getAttribute('player_data'), true); 
       //echo $array["video"]["file"] . " ## ";      
      } 
     } 
     echo $nazwafilmu . ' ## ' . trim($line[1]) . ' ## ' . $array["video"]["file"] . '<br />'; 
    } 
    fclose($handle); 
} 
else { 
    die('brak pliku .txt'); 
} 
+0

Prolly将无法正常工作,由于浏览器的不一致性,但尝试['冲洗()'](http://php.net/manual/en/function.flush.php)功能。 – MonkeyZeus

+0

刷新在这里没有帮助 – buli

回答

0

您可以使用刷新和ob_flush() PHP flush()输出缓冲区。

http://php.net/manual/en/function.flush.php

<?php 
    ob_start(); 
    echo 'Something'; 
    ob_flush(); 
    flush(); 
    ob_end_flush(); 
+0

我已经使用它们,他们不工作。脚本在一台服务器上正常工作,但第二次则没有。即使当我在文件开始处有HTML代码时(测试),然后PHP代码它不显示“测试”。两台服务器都运行Apache,所以我认为这将是一个配置问题或与PHP配置有关。 – buli

+0

@ monster1777如果它甚至没有在页面的开始处打印静态HTML,那么您可能在某处出现语法错误。试着看看你的Apache日志。 – LifeOfRPi

+0

在apache日志中没有错误。就像我说过的,在其他网络服务器上运行的是相同的脚本,flush方法不起作用。但是,当我故意在脚本中出错时,它不会在apache日志中显示,甚至在浏览器中也不显示(我有错误报告)。好吧,我想我必须联系我的VPS提供商 – buli