Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ

Warning: Trying to access array offset on false in /home/u98739/softtime.ru/www/utils/currentforum.php on line 18

Warning: Trying to access array offset on false in /home/u98739/softtime.ru/www/utils/currentforum.php on line 19

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Ответ 004 на задачу N 13

Сообщения:  [1-2] 

 
 автор: cheops   (27.03.2006 в 01:06)   письмо автору
 
   для: SoftTime   (21.03.2006 в 16:18)
 

Достатчно компактно, работает и работает как надо. Ход с HEAD очень хитрый и хороший - в этом случае тело запроса не грузится и не нужно отслеживать лишний перевод строки между HTTP-заголовками и телом запроса.

   
 
 автор: SoftTime   (21.03.2006 в 16:18)   письмо автору
 
 

Ответ 004 на задачу N 13.
С условиями задачи можно ознакомится по ссылке.

<?
 function getRemoteFileSize($url){
   $parse = parse_url($url);
   $host = $parse['host'];
   $fp = @fsockopen ($host, 80, $errno, $errstr, 20);
   if(!$fp){ 
     $ret = 0; 
   }else{
     $host = $parse['host'];
     fputs($fp, "HEAD ".$url." HTTP/1.1\r\n");
     fputs($fp, "HOST: ".$host."\r\n"); 
     fputs($fp, "Connection: close\r\n\r\n");
     $headers = "";
     while (!feof($fp)){ 
       $headers .= fgets ($fp, 128); 
     }
     fclose ($fp);
     $headers = strtolower($headers);
     $array = preg_split("|[\s,]+|",$headers);
     $key = array_search('content-length:',$array);
     $ret = $array[$key+1];
   }  
   if($array[1]==200) return $ret;
   else return -1*$array[1];
 }
 
 $url = 'http://www.softtime.ru/files/whois.zip';
 $size = getRemoteFileSize($url);
 if($size==0) echo "Не могу соединиться";
 elseif($size<0) echo "Ошибка. Код ответа HTTP: ".(-1*$size);
 else echo "Размер удалённого файла (bytes): ".$size;  
?>

Axxil

http://www.softtime.ru/info/task.php?id_article=83

   

Сообщения:  [1-2] 

Форум разработан IT-студией SoftTime