2017-08-12 17 views
0

假設我有一個PHP文件這樣的遠程服務器上運行:儘快從PHP腳本接收數據,因爲它們被刷新

for ($i = 0; $i < 10; $i++) 
{ 
    ob_start(); 

    echo "Step $i of 9<br>"; 

    sleep(1.0); 

    ob_end_flush(); 
    ob_flush(); 
} 

這將打印像「9步驟x」每隔一條線。 現在假設我想從另一臺服務器調用此文件。我使用curl嘗試,代碼如下所示:

function PostData($data) 
{ 
    global $bridgeURL; 

    $ch = curl_init(); 

     curl_setopt($ch, CURLOPT_URL, $bridgeURL); 

     curl_setopt($ch, CURLOPT_POST, 1); 
     curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data)); 

     curl_setopt($ch, CURLOPT_RETURNTRANSFER, false); 

     $result = curl_exec ($ch); 

    curl_close ($ch); 

    return $result;  
} 

它運作良好,但接收一下子全輸出。 每次遠程腳本刷新時都有接收數據的方法嗎?它不需要捲曲。任何方法都是可喜的。 預先感謝您。

回答

0

在你的curl文件中包含你的函數文件(比方說functions.php)(比方說curl.php)。然後在你的循環內調用你的函數。

include 'functions.php;` 
for ($i = 0; $i < 10; $i++) 
{ 
    ob_start(); 

    $post_data = PostData($data); //assume $data is define somewhere else 

    echo "Step $i of 9<br>"; 

    sleep(1.0); 

    ob_end_flush(); 
    ob_flush(); 
} 
+0

謝謝。不要以爲我能做到這一點。我試圖將問題簡化得更加清晰。目標腳本正在進行長達50秒的操作。我需要回到其他腳本定期更新當前狀態 –

+0

我認爲最主要的是我沒有看到你展示的兩個腳本是如何相互關聯的。也許我誤解了。 – Difster

+0

是的,情況確實如此,但你的誤解是由於我的錯想解釋。我終於解決了創建回調並將其作爲CURLOPT_WRITEFUNCTION傳遞的問題。無論如何謝謝你的幫助。非常感激 –