0

我想避免在我的网站上执行任何不必要的 HTTP 请求以提高性能。所以,我想在我的服务器上包含一个本地 PHP,而不使用 cURL。问题是我正在调用的 PHP 需要通过 HTTP GET 传递一些参数。我想保持这种状态,因为我还希望能够从其他地方访问这些 PHP 文件。

这样做的最佳方法是什么?我可以在给它 GET 参数的同时访问本地 PHP 文件的输出吗?

4

3 回答 3

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,而只需按照它们的意图使用所有功能。

于 2012-06-12T11:51:05.537 回答
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文件的处理输出。

于 2012-06-12T12:16:23.150 回答
0

这很丑陋,但有效。

$_GET['foo'] = 1;
$_GET['bar'] = 2;
include '/path/to/file.php';
于 2012-06-12T11:47:27.293 回答