1

我一直想要这样做,因为我的网站每次加载页面大约执行 3 个 HTTP 请求,因为每个 PHP 的输出都是使用 cURL 检索的。这太慢了,我想避免使用 cURL。我在 Stack Overflow 上找到了这个问题,它基本上可以满足我的要求。接受的答案的建议是使用ob_start();开始获取输出,然后使用ob_get_clean();将输出放入变量中。我现在的问题是我试图从需要使用 HTTP Get 传递给它们的变量中捕获输出的 PHP 脚本。像这样访问这些变量:

$term = $_GET['term'];

我不想改变这一点,因为虽然我要从另一个 PHP 脚本访问这些 PHP 脚本的输出,但我也计划从其他地方访问它们。那么,有没有办法让这些 PHP 脚本通过 Get 接受一些参数,然后用上面建议的方法捕获它们的输出?

4

3 回答 3

2

如果已设置,您可以从任何 php 脚本中 $_GET 变量(使用isset进行检查)。然后只需 cURL 到这样的 url 就可以了。

如果您之前已将方法更改为 POST,则可以使用CURLOPT_HTTPGET. 有关详细信息,请参阅 curl_setopt 函数页面 ( http://www.php.net/manual/en/function.curl-setopt.php )。

对于非 cURL 方法,使用jQuery ajax. 使用起来非常简单,只需阅读此处的文档即可。

编辑:这就是你想要的(虽然没有检查代码)

<?php

function get_include_contents($filename, $get) {
 if (is_file($filename)) {
    ob_start();
    $_GET = array();
    while (list($key, $val) = each($get)) {
      $_GET[$key]=$val;
    }
    include $filename;
    return ob_get_clean();
 }
 return false;
}

$string = get_include_contents('somefile.php', array('param1'=>'x', 'param2'=>'y'));

?>
于 2012-06-12T08:28:28.783 回答
1

我不想改变这一点,因为虽然我要从另一个 PHP 脚本访问这些 PHP 脚本的输出,但我也计划从其他地方访问它们。那么,有没有办法让这些 PHP 脚本通过 Get 接受一些参数,然后用上面建议的方法捕获它们的输出?

你的问题有点不清楚你为什么首先使用 cURL。如果您的脚本在同一台服务器上,您可以简单地设置正确的$_GET变量并使用:

<?php
ob_start( );
// include the file.
$_GET['foo'] = 'bar';
include 'the_file.php';

$output = ob_get_clean( );

如果您的脚本位于另一台服务器上,其中 include 不可行,您将始终需要执行 HTTP 请求来获取其内容,无论您的 this 使用 cURL 还是 Ajax,或者我所关心的套接字。

于 2012-06-12T08:46:16.887 回答
0

好吧,只要它在 URI 中,您就可以从加载的任何脚本访问 $_GET,变量 $term 可以在任何脚本中使用。您还可以包含脚本。

当您包含一个脚本时,您可以在包含后访问它的一些内容。

于 2012-06-12T08:24:50.987 回答