检查file_get_contents何时完成

时间:2011-03-17 21:28:42

标签: php file-get-contents

无论如何我可以检查file_get_contents何时完成加载文件,所以我可以加载另一个文件,它会自动完成加载一个文件然后进入下一个文件吗?

3 个答案:

答案 0 :(得分:19)

使用file_get_contents()加载文件将阻止脚本的操作,直到PHP完全读取它为止。它必须,因为你无法分配$content =

答案 1 :(得分:1)

PHP是单线程的 - 所有功能都是一个接一个地发生。如果你想尝试异步加载文件,有一个php_threading PECL扩展,但我自己没有尝试过,所以我不能说它是否有用。

答案 2 :(得分:0)

简单的例子,它将循环并获得google.co.uk #q = * 5次并输出,如果它得到它,相当无用但有点回答你的问题,可以检查file_get_contents是否成功在做下一个之前,很明显谷歌可以改成别的东西。但不太实际。加上输出缓冲不要在函数内输出。

<?php 
function _flush (){
    echo(str_repeat("\n\n",256));
    if (ob_get_length()){           
        @ob_flush();
        @flush();
        @ob_end_flush();
    }   
    @ob_start();
}
function get_file($loc){
    return file_get_contents($loc);
}

for($i=0;$i<=5;$i++){

    $content[$i] = @get_file("http://www.google.co.uk/#q=".$i);
    if($content[$i]===FALSE){
        echo'Error getting google ('.$i.')<br>';
            return;
    }else{
        echo'Got google ('.$i.')<br>';
    }
    ob_flush();
    _flush();
}
?>