За последние 24 часа нас посетили 41094 программиста и 1812 роботов. Сейчас ищут 2155 программистов ...

размер файла на удаленном сервере

Тема в разделе "PHP для новичков", создана пользователем k.almas, 3 авг 2012.

  1. k.almas

    k.almas Активный пользователь

    С нами с:
    27 июл 2012
    Сообщения:
    36
    Симпатии:
    0
    Помогите, пожалуйста, переделать этот скрипт, который показывает размер файла на удаленном сервере.
    Файл под который надо переделать: http://s1.mptri.pp.ua/2012-31-07/320/kristina_si-nachinayu_ ... mix-mp.mp3
    Я просто не понимаю принцип работы, если дадите какие-то полезные ссылки буду рад.
    Код (Text):
    1. <?
    2.  function getRemoteFileSize($url){
    3.    $parse = parse_url($url);
    4.    $host = $parse['host'];
    5.    $fp = @fsockopen ($host, 80, $errno, $errstr, 20);
    6.    if(!$fp){  
    7.      $ret = 0;  
    8.    }else{
    9.      $host = $parse['host'];
    10.      fputs($fp, "HEAD ".$url." HTTP/1.1\r\n");
    11.      fputs($fp, "HOST: ".$host."\r\n");  
    12.      fputs($fp, "Connection: close\r\n\r\n");
    13.      $headers = "";
    14.      while (!feof($fp)){  
    15.        $headers .= fgets ($fp, 128);  
    16.      }
    17.      fclose ($fp);
    18.      $headers = strtolower($headers);
    19.      $array = preg_split("|[\s,]+|",$headers);
    20.      $key = array_search('content-length:',$array);
    21.      $ret = $array[$key+1];
    22.    }  
    23.    if($array[1]==200) return $ret;
    24.    else return -1*$array[1];
    25.  }
    26.  
    27.  $url = 'http://www.softtime.ru/files/whois.zip';
    28.  $size = getRemoteFileSize($url);
    29.  if($size==0) echo "Не могу соединиться";
    30.  elseif($size<0) echo "Ошибка. Код ответа HTTP: ".(-1*$size);
    31.  else echo "Размер удалённого файла (bytes): ".$size;  
    32. ?>
     
  2. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    Нужно добавить заголовок User-Agent:
    Код (PHP):
    1. <?php
    2. function getRemoteFileSize($url) {
    3.     $parse = parse_url($url);
    4.     $host = $parse['host'];
    5.     $fp = @fsockopen($host, 80, $errno, $errstr, 20);
    6.     if(!$fp) {
    7.         $ret = 0;
    8.     } else {
    9.         $host = $parse['host'];
    10.         fputs($fp, "HEAD " . $url . " HTTP/1.1\r\n");
    11.         fputs($fp, "HOST: " . $host . "\r\n");
    12.         fputs($fp, "User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:9.0.1) Gecko/20100101 Firefox/9.0.1\r\n");
    13.         fputs($fp, "Connection: close\r\n\r\n");
    14.         $headers = "";
    15.         while(!feof($fp)) {
    16.             $headers .= fgets($fp, 128);
    17.         }
    18.         fclose($fp);
    19.         $headers = strtolower($headers);
    20.         $array = preg_split("|[\s,]+|",$headers);
    21.         $key = array_search('content-length:', $array);
    22.         $ret = $array[$key + 1];
    23.     }
    24.     if($array[1] == 200) return $ret;
    25.     else return -1 * $array[1];
    26. }
    27. $url = 'http://s1.mptri.pp.ua/2012-31-07/320/kristina_si-nachinayu_zabyvat_unorthodoxx_remix-mp.mp3';
    28. $size = getRemoteFileSize($url);
    29. if($size == 0) echo "Не могу соединиться";
    30. elseif($size < 0) echo "Ошибка. Код ответа HTTP: " . (-1 * $size);
    31. else echo "Размер удалённого файла (bytes): " . $size;
    32. ?>
    Просто сайт не пускает без юзер-агента запросы, говорит forbidden.

    Добавлено спустя 1 минуту:
    Или это была реклама сайта s1.mptri.pp.ua ? :)
     
  3. k.almas

    k.almas Активный пользователь

    С нами с:
    27 июл 2012
    Сообщения:
    36
    Симпатии:
    0
    Спасибо большое! У вас есть сайты? Я мог бы там покликать по рекламам и друзей попросить)
    А это идея...