我一直想这样做,因为我的网站每页加载大约3个HTTP请求,因为每个PHP的输出都是用cURL检索的。这太慢了,我想避免使用cURL。我在Stack Overflow上找到this question,它基本上做了我想要的。接受的答案建议是使用ob_start();
开始获取输出,然后使用ob_get_clean();
将输出放入变量中。我现在的问题是PHP脚本我试图从使用HTTP Get传递给它们的需求变量中捕获输出。访问这些变量:
$term = $_GET['term'];
我不想改变它,因为虽然我将从另一个PHP脚本访问这些PHP脚本的输出,但我也计划从其他地方访问它们。那么,有没有办法欺骗这些PHP脚本通过Get接受一些参数,然后使用上面建议的方法捕获它们的输出?
答案 0 :(得分:2)
如果设置了任何php脚本,你可以$ _GET变量(使用isset来检查)。然后,只要cURL到这样的网址就行了。
如果您之前已将方法更改为POST,则可以使用CURLOPT_HTTPGET
。有关详细信息,请参阅curl_setopt函数页面(http://www.php.net/manual/en/function.curl-setopt.php)。
对于非cURL方法,请使用jQuery ajax
。使用起来非常简单,只需阅读文档here。
编辑:这是你想要的(虽然没有检查过代码)
<?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'));
?>
答案 1 :(得分:1)
我不想改变它,因为虽然我将从另一个PHP脚本访问这些PHP脚本的输出,但我也计划从其他地方访问它们。那么,有没有办法欺骗这些PHP脚本通过Get接受一些参数,然后使用上面建议的方法捕获它们的输出?
你的问题有点不清楚为什么你首先使用cURL。如果您的脚本位于同一服务器上,则只需设置正确的$_GET
变量并使用:
<?php
ob_start( );
// include the file.
$_GET['foo'] = 'bar';
include 'the_file.php';
$output = ob_get_clean( );
如果您的脚本位于其他服务器上,其中包含不可行,那么始终必须执行HTTP请求才能获取其内容,无论您使用cURL还是Ajax,或者我关心的所有插座。
答案 2 :(得分:0)
你可以从任何加载的脚本访问$ _GET,只要它在URI中,变量$ term就可以在任何脚本中使用。您还可以包含脚本。
当您包含脚本时,您可以在包含后访问其中的一些内容。