我的网站上有一个页面执行时间很长,我通过在编写时刷新内容解决了它太慢的问题,但现在我需要从另一个网站加载它,如果我必须从我的网站执行此操作,包含就足够了, 但是由于我需要从另一个网站加载它,我想使用file_get_contents,问题是这样刷新不起作用,并且页面需要很多时间来加载,我听说解决方案是使用 fsockopen 和 fread,所以我尝试使用一些示例,我得到了这样的东西
<?php
ob_start();
$fp = fsockopen("www.mysite.com", 80);
if (!$fp) {
echo "$errstr ($errno)<br />n";
} else {
fwrite($fp, "Data sent by socket");
$content = "";
while (!feof($fp)) {
$content .= fread($fp, 1024);
ob_flush();
}
fclose($fp);
echo $content;
}
?>
问题是,如果我这样做它会起作用,但是当我尝试类似的东西时
<?php
ob_start();
$fp = fsockopen("www.mysite.com/subfolder/index.php", 80);
if (!$fp) {
echo "$errstr ($errno)<br />n";
} else {
fwrite($fp, "Data sent by socket");
$content = "";
while (!feof($fp)) {
$content .= fread($fp, 1024);
ob_flush();
}
fclose($fp);
echo $content;
}
?>
它告诉我类似的东西:
警告:fsockopen(): php_network_getaddresses: getaddrinfo 失败: 不知道这样的主机。在第 2 行
我弄错了什么?
更新:我自己解决:正确的代码是
<?php
function HTTP_Post($URL) {
ob_start();
$URL_Info=parse_url($URL);
$fp = fsockopen($URL_Info["host"],80);
fwrite($fp, "GET ".$URL_Info["path"]." HTTP/1.0rn" );
fwrite($fp, "Host: ".$URL_Info["host"]."rn");
fwrite($fp, "Connection: Closernrn");
while(!feof($fp)) {
echo fgets($fp, 1024);
ob_flush();
flush();
}
fclose($fp);
}
ini_set('max_execution_time', 300);
HTTP_Post("http://www.corriere.it/cronache/");
?>