2014-11-22 69 views
0

我有我的網站的一個頁面,有一個很長的執行時間,解決了我的事實,這是通過刷新內容而寫太慢的問題,但現在我需要從其他網站加載它,如果我不得不從我的網站做到這一點,包含就足夠了,但因爲我需要從另一個網站加載它,所以我想使用file_get_contents,問題是用這種方法flush不起作用,頁面花費大量的時間來加載,我聽說溶液使用fsockopen和FREAD,所以我試圖用一些例子,我得到這樣PHP的fsockopen子

<?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

我誤以爲是什麼?

回答

1

UPDATE:由我自己解決:正確的代碼是

<?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/"); 
?>