Показать сообщение отдельно

  #9  
Старый 18.01.2008, 13:35
groundhog
Познавший АНТИЧАТ
Регистрация: 12.05.2007
Сообщений: 1,235
Провел на форуме:
2238549

Репутация: 1318


Отправить сообщение для groundhog с помощью ICQ
По умолчанию

Цитата:
Можешь привести пример кода?
PHP код:
<?php

    
/**
    * Remote size fetcher function
    *
    * Retrieve the size of remote file
    * from it's Content-Length header at
    * HEAD method request
    *
    * @param  string URL of remote file
    * @return mixed  double - the size of
    *                remote file in bytes,
    *                or false at failed
    *                operation.
    */

    
function getRemoteFileSize ($remoteUrl) {
        
$urlData parse_url($remoteUrl);

        if (!isset(
$urlData["host"])) return false;
        if (!isset(
$urlData["port"])) $urlData["port"] = 80;
        if (!isset(
$urlData["path"])) $urlData["path"] = "/";

        
$socket fsockopen($urlData["host"], $urlData["port"], $errno$errstr60);
        if (!
$socket) return false;

        
$resource $urlData["path"];
        if (isset(
$urlData["query"])) $resource .= "?{$urlData["query"]}";

        
$sendData  "HEAD {$resource} HTTP/1.1\r\n";
        
$sendData .= "Host: {$urlData["host"]}\r\n";
        
$sendData .= "User-Agent: DaMaGeLaB file fetcher\r\n";
        
$sendData .= "Accept: */*\r\n";
        
$sendData .= "Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0\r\n";
        
$sendData .= "Pragma: no-cache";
        
$sendData .= "Connection: Close\r\n\r\n";

        
$ret fwrite($socket$sendData);
        if (!
$ret) return false;

        
$buffer "";
        while (!
feof($socket)) {
            
$buffer .= fgets($socket8192);
        }

        
fclose($socket);

        list(
$headers$content) = preg_split("/\r\n\r\n/"$buffer2);

        if (
strlen($headers) <= 0) return false;

        
$httpCode intval(substr($headers93));
        if (
$httpCode != 200) return false;

        if (!
preg_match("/Content\-Length: (\d+)\r\n/i"$headers$matches))
            return 
false;

        return 
doubleval($matches[1]);
    }



    
$ret getRemoteFileSize ("http://ya.ru");

    if (!
$ret) exit("Couldn't get remote file size");

    
printf("Size of remote file is: %s bytes"$ret);

?>

Последний раз редактировалось groundhog; 18.01.2008 в 13:39..
 
Ответить с цитированием