PHP - while循环加载

时间:2014-03-31 17:04:54

标签: php while-loop

我有一个while循环,从文本文件中获取ip和密码,并使用HTTP Auth登录到我租用的某些服务器。

<?php

$username = 'admin';


function login($server, $login){

global $username, $password, $server;

$options = array(

    CURLOPT_URL => $server,
    CURLOPT_HEADER => 1,
    CURLOPT_RETURNTRANSFER => 1,
    CURLOPT_USERAGENT => "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2 GTB5",
    CURLOPT_HTTPHEADER => array("
    Host: {$server}
    User-Agent: Mozilla/5.0 (Windows NT 6.2; WOW64; rv:28.0) Gecko/20100101 Firefox/28.0
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
    Accept-Language: en-US,en;q=0.5
    Accept-Encoding: gzip, deflate
    Connection: keep-alive
    Authorization: Basic {$login}

"));

$ch = curl_init();
curl_setopt_array($ch, $options);
$result = curl_exec($ch);
$http_status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if ( $http_status == 200 ) {
 //do something  
echo "Completed";

} 
else { echo "Something went wrong";}

};

$file = fopen('myServers.txt', 'r');


while (! feof($file)) {
$m = explode(fgets($file), ':');
$password = $m[0];
$server = $m[1];
$login = base64_encode("{$username}:{$password}");
login($server, $login);
};




?>

脚本运行正常。但是,当我在本地主机上加载页面时,需要永远加载,然后在完成整个文件时立即打印出所有内容。

我想在每次执行文件时打印Something went wrongcompleted,我不希望它等待整个文件完成循环。

2 个答案:

答案 0 :(得分:2)

您可能想要查看PHP刷新,它会在继续创建更多页面内容之前将内容推送到浏览器。请注意,根据我对PHP的记忆,您需要同时使用ob_flush()和flush()才能正确地将内容刷新到浏览器。

http://us3.php.net/flush

[编辑]

示例:您可以尝试将echo语句更改为类似下面的内容:

echo "Completed";
ob_flush();
flush();

答案 1 :(得分:1)

是否可以执行您想要执行的操作取决于正在使用的Web服务器以及如何配置输出缓冲

开始阅读的好地方是PHP flush功能的文档。

flush的调用旨在将输出推送给最终用户 - 但有时Web服务器会实现它自己的输出缓冲,这会影响效果。

来自flush文档:

  

多个服务器,尤其是Win32上的服务器,仍会缓冲脚本的输出,直到它终止,然后才将结果传输到浏览器。