2012-10-10 199 views
1

我想在PHP中運行10次的while循環中打印UDP消息。問題在於它一直等到循環完成,然後消息打印了10次,但我希望在循環的每次迭代時都打印它,而不是在循環完成時打印出來。這是我的代碼。PHP等待一個循環完成

<?php 
    $socket = socket_create(AF_INET,SOCK_DGRAM,SOL_UDP); 
    socket_bind($socket,$ip_address,$port); 

    $i = 0; 
    while($i < 10) 
    { 
    $i++; 
    $FROM = ''; 
    $PORT = 0; 

    socket_recvfrom($socket,$buffer,1024,0,$from,$PORT); 
    echo "Receiving $buffer from IP $FROM and Port $PORT", PHP_EOL); 
    flush(); 
    sleep(1); 
    } 
?> 
+0

它是命令行腳本還是你從瀏覽器調用它? –

+0

我從瀏覽器中調用它 –

回答

1

呼叫ob_flush()刷新輸出緩衝區,您的來電的flush()後。

此功能將發送輸出緩衝區的(如果有的話)從瀏覽器訪問的內容

如果header('Content-type: text/html; charset=utf-8');可能需要在你的網頁的頂部添加

也是一個ob_start()在腳本開始處打開輸出緩衝。

+0

我已經使用ob_flush()以及不起作用 –

+0

它可能值得一提的是php.net上關於瀏覽器和ob_flush的文章http://www.php.net/manual/en/ function.ob-flush.php#109699 –

+1

當您從瀏覽器調用它時,將以下內容添加到您的PHP腳本'header('Content-type:text/html; charset = utf-8');' –