$page1 = file_get_contents('http://www.google.com');
$page2 = file_get_contents('http://localhost:8000/prueba');
当我回显结果时,谷歌它适用于我的网站,但不适用于我的网站。当我把地址放在资源管理器上时,工作。这发生在我在 django 中制作的所有网站上。:(
警告:file_get_contents( http://localhost:8000/prueba
) [function.file-get-content]:无法打开流:连接尝试失败,因为连接方在一段时间后未正确响应,或者建立的连接失败,因为连接的主机无法响应。 在 C:''xampp''htdocs''squirrelmail''plugins''captcha''backends''b2evo''b2evo.php 第 138 行
致命错误:在第 138 行的 C:''xampp''htdocs''squirrelmail''plugins''captcha''backends''b2evo''b2evo.php中超过了 60 秒的最大执行时间
PHP 内置 Web 服务器(在我的情况下使用 Laravel)时遇到此问题的任何人,这是由于您的请求被 file_get_contents()/curl 函数阻止引起的。
开发服务器的文档说
如果请求被阻止,PHP 应用程序将停止。
由于 PHP 内置服务器是单线程的,因此在您的服务器上请求另一个 url将停止第一个请求,并且超时。
作为解决方案,您可以使用适当的Web服务器(nginx,apache等)。
编辑:截至目前,我真的建议您使用Laravel Sail作为PHP项目的开发环境。它为您节省了大量设置和配置不同服务(Web服务器,数据库,队列等)的时间。
正如zub0r指出的那样,内置的PHP服务器是单线程的。如果您不想安装和配置像nginx这样的Web服务器,并且不想使用Homestead或Valet,还有另一种简单的解决方案:
使用另一个端口启动内置 PHP 服务器的另一个实例,并在应用程序的内部请求中使用它。
php -S localhost:8000
'' in another console
php -S localhost:8001
当我通过 Guzzle 请求一些本地虚拟 API 时,我在我的 Laravel 应用程序中使用它,它工作正常。
要从 PHP 本地文件获取内容的结果,您可以使用:
exec('php file.php', $content);
有时$content变量是一个数组,所以只需指向正确的键,如$content[3]
希望这对你有帮助。