无论如何我可以检查file_get_contents何时完成加载文件,所以我可以加载另一个文件,它会自动完成加载一个文件然后进入下一个文件吗?
答案 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();
}
?>