2016-11-07 184 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