PHP file_get_contents是异步的


PHP file_get_contents is asynchronous?

我读到file_get_content是同步的,但当我尝试下面的代码时,我不这么认为:

$url = "http://foo.com";
$a = array("file11.php", "file2.php", "file3.php");
foreach ($a as $file)
{
    $final = $url . "/" . $file;
    print "Calling $final ...";
    $res = file_get_contents($final);
    if ($res)
        print "OK";
    else
        print "ERR!";
    print "<br>";
}

每个文件都执行一些复杂的任务,所以我知道任何脚本的最短执行时间,但这段代码运行得很快,似乎不会等待每个请求!如何等待每个文件请求?感谢:)

上面的代码肯定是同步的。因此,如果你说代码在几秒钟后退出,而它应该更长,那么你可能对代码有问题。

尝试将此代码包装在Try{}捕获中。并打印错误。看看上面写着什么。

Try { code here } catch (Exception $e) {  }

此外,php.ini中MAX_EXECUTION脚本的大多数默认设置为30秒。之后,它也将在出现致命超时错误时退出。检查php.ini中的设置,并根据需要进行调整。

编辑:

收集你的评论,我现在假设你正在尝试执行你所引用的php文件。这会让你的问题非常混乱,标签也会出错。

您在示例中使用的代码只读取文件的内容,因此它不会执行任何内容。这就解释了为什么它恢复得如此之快,而你预计它需要一段时间。

如果你想执行引用的php文件,可以这样处理:

Include_once( $final );

而不是打开内容。