使用file
功能,使用网址或路径有什么不同吗?
$my_array = file("http://www.mydomain.com/my_script.php?id=1");
$my_array = file($_SERVER['DOCUMENT_ROOT']."my_script.php?id=1");
我使用第一个,但是我猜它依赖于我的服务器互联网连接,因为有时,尽管脚本被调用(我知道)因为my_script.php在数据库中插入一行)我没有得到响应而$ my_array是空的。
我是对的吗?
如果是这样,使用第二个调用将始终使用响应填充$ my_array。不是吗?
我可以通过传递参数的路径调用文件,方法与使用URL的方式相同吗?
编辑:非常感谢您的回答,对不起,如果这个问题太愚蠢了......我正在研究其他人的代码。他这样做是因为my_script.php也是从其他服务器调用的。我会尝试使用require
首先准备$ _GET变量(有点棘手,但我不想触摸my_script.php)。
答案 0 :(得分:2)
所有file()
所做的都是读取文件。它旨在从磁盘加载某些东西,但支持PHP提供的任何fopen包装,例如HTTP。
当您将网址传递给file()
时,它会从您的网络服务器获取该网址。您的Web服务器将执行您的PHP并返回结果,这是您从file()
返回的结果。所以不,你有什么完全不同主要是因为一个涉及Web服务器和PHP,而另一个没有。
require()
或require_once()
。
答案 1 :(得分:2)
以http://...
开头的任何路径都会发出实际的HTTP请求。从本质上讲,它就像您在浏览器中输入该URL一样。如果您在自己的服务器上为脚本执行此操作,则极其无稽之谈,因为:
echo
的任何内容如果您尝试与其他远程服务器通信,这种情况才有意义。
另一方面,在本地非?id=1
文件上使用http://...
是不可能的,因为?id=1
不是文件名的有效部分(或至少它可能不会做你认为它做的事情。)
您通常想要的是:
require __DIR__ . '/foo.php';
这包括当前脚本中作为PHP代码的其他PHP脚本。你应该定义函数和类,使用自动加载来加载它们并根据需要调用它们,但这是一个非常广泛的正确代码组织主题,我不会在这里讨论。