|
|
|
| Ответ 001 на задачу N 13.
С условиями задачи можно ознакомится по ссылке.
<?
function GetFileSize($host, $patch, $port="80")
{
$fp = fsockopen($host, $port, $errno, $errstr, 30);
if (!$fp)
{
return "Ошибка: $errstr ($errno)";
}
else
{
# Запрос
$headers = "GET $patch HTTP/1.1\r\n";
$headers .= "Host: $host \r\n";
$headers .= "Connection: Close\r\n\r\n";
fwrite($fp, $headers);
# Ответ
while (!feof($fp))
{
$line = fgets($fp, 1024);
// Ищем строку содержащую размер файла
preg_match("|Content-Length: ([\d\w]+)|i",$line,$out);
if(!empty($out[1]))
{
$filesize = $out['1'];
break;
}
}
if(empty($filesize))
return "Размер файла не определен";
else
return "Размер файла $filesize байт";
fclose($fp);
}
}
# Вызываем функцию
print GetFileSize("www.softtime.ru", "/files/whois.zip");
?>
|
http://www.softtime.ru/info/task.php?id_article=83 | |
|
|
|
|
|
|
|
для: SoftTime
(20.03.2006 в 16:26)
| | Душевно, добротно, работает. Только при загрузке заголовков, лучше ориентироваться на лишний перевод строки между заголовками телом ответа, а не на конец файла, иначе если сервер не пошлёт HTTP-заголовок Content-Length, функция загрузит весь файл. | |
|
|
|