У меня есть страница на моем веб-сайте с очень долгим временем выполнения, я решил проблему того, что она была слишком медленной, стирая содержимое во время записи, но теперь мне нужно загрузить его с другого веб-сайта, если мне пришлось это сделать с моего сайта включения было бы достаточно, но так как мне нужно загрузить его с другого сайта, я подумал об использовании 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.0\r\n" );
fwrite($fp, "Host: ".$URL_Info["host"]."\r\n");
fwrite($fp, "Connection: Close\r\n\r\n");
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/");
?>
Других решений пока нет …