我希望避免在我的网站上执行任何不必要的HTTP请求以提高性能。所以,我想在我的服务器上包含本地PHP而不使用使用cURL。问题是PHP I调用期望一些参数通过HTTP GET传递。我希望保持这种方式,因为我也希望能够从其他地方访问这些PHP文件。
这样做的最佳方式是什么?我可以在为其提供GET参数的同时访问本地PHP文件的输出吗?
答案 0 :(得分:3)
我想避免在我的网站上做任何不必要的HTTP请求以提高性能
include
在向其提供HTTP URI时也发出HTTP请求,因此不是客户端的异步包含(例如使用AJAX或iframe),而是在服务器上同步执行,因此创建页面加载速度更慢。
因此,虽然包含可能会按预期工作(您希望包含输出,对吧?),但它肯定不会加速您的网站。
我正在调用的PHP期望通过HTTP GET传递一些参数。我想保持这种方式,因为我也希望能够从其他地方访问这些PHP文件。
然后更改这些文件并在包含它们之前设置适当的变量。或者甚至更好,将其重构为函数。例如,如果要包含的文件如下所示:
$username = $_GET['username'];
print "User: $username";
然后重构为函数并存储在单独的文件中:
function PrintUsername($username)
{
print "User: $username";
}
并恰当地称呼它:
include('printusername.php');
PrintUsername($_GET['username']);
(你可能想在这里和那里扔一个isset()
。)现在你可以改变你的代码也需要这个输出:
include('printusername.php');
PrintUsername($someOtherVariable);
现在您不必依赖URL或$_GET
或include
魔法,而只需使用所有功能。
答案 1 :(得分:2)
假设您在Linux机器上,您可以执行脚本并使用以下内容获取输出:
exec ("php myPhpFile.php arg1 arg2 arg3 > myPhpOutput.html");
然后打开输出的文件进行阅读。
为了使它工作(并且它很难!)你需要修改myPhpFile并实现一个方法来测试$ _GET参数。如果找不到,则使用argv
加载属性改善(我懒洋洋地想:))
shell_exec将输出作为字符串返回。所以
$filecontents = shell_exec("php yourfile.php arg1 arg2 arg3...");
将返回php文件的已处理输出。
答案 2 :(得分:0)
这很难看,但很有效。
$_GET['foo'] = 1;
$_GET['bar'] = 2;
include '/path/to/file.php';