PHP fsockopen 子文件夹



我的网站上有一个页面执行时间很长,我通过在编写时刷新内容解决了它太慢的问题,但现在我需要从另一个网站加载它,如果我必须从我的网站执行此操作,包含就足够了, 但是由于我需要从另一个网站加载它,我想使用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/"); 
?>

相关内容

  • 没有找到相关文章

最新更新