Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: Определение размера файла
Покинул форум
Сообщений всего: 2132
Дата рег-ции: Дек. 2008 Откуда: Москваль
Помог: 52 раз(а)
Сами же уточнили, что "не локального". Запрашивайте удалённый файл (только заголовки принимайте, тело обрезайте, оно вам не нужно) и смотрите поле "Content-length".
TIT
Отправлено: 19 Января, 2009 - 13:39:49
Новичок
Покинул форум
Сообщений всего: 2
Дата рег-ции: Янв. 2009 Откуда: Ростов-на-Дону
Помог: 0 раз(а)
Stierus пишет:
Сами же уточнили, что "не локального". Запрашивайте удалённый файл (только заголовки принимайте, тело обрезайте, оно вам не нужно) и смотрите поле "Content-length".
Уважаемый Stierus, подскажите, как скачать только заголовок файла, не качая его тело?
Попутно, задав данный вопрос на гугле получил ответ, может быть кому будет интересно. Ссылка: http://otvety.google.ru/otvety/thread?fid=6116b8e613df3c8f000460d3f7e1224e&eac=av&tid=6116b8e613df3c8f&tk=ALfNcUzyjGBrk4zo8xbAOwzNKWH5ABUU1SN_CcziavmT-m_o7dpMV6kP_awShiU_rityU3lunq6m2tfU7ulZ39pxz0zh4I-fDCaE8FuYuP3Mv2yrIn-cDAA
Покинул форум
Сообщений всего: 2132
Дата рег-ции: Дек. 2008 Откуда: Москваль
Помог: 52 раз(а)
Цитата:
Уважаемый Stierus, подскажите, как скачать только заголовок файла, не качая его тело?
Если скачиваете вречную - просто дополнительное условие выставляйте.
У Curlа есть отдельный параметр, в мануале посмотрите - найдёте
Ch_chov
Отправлено: 19 Января, 2009 - 19:12:50
Постоянный участник
Покинул форум
Сообщений всего: 2121
Дата рег-ции: Июль 2008 Откуда: из города
Помог: 90 раз(а)
Правильно ли я понимаю, что для того чтобы получиль размер удаленного файла без использования CURL нужно считывать каждую строчку файла с помощью fgets и искать в ней заголовок "Content-length".
valenok
Отправлено: 19 Января, 2009 - 20:10:21
Здесь могла бы быть ваша реклама
Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006 Откуда: Israel
Помог: 3 раз(а)
Нет. Эта функция проигнорирует заголовки.
Воспользуйтесь curl'ом.
----- Truly yours, Sasha.
Ch_chov
Отправлено: 19 Января, 2009 - 21:18:24
Постоянный участник
Покинул форум
Сообщений всего: 2121
Дата рег-ции: Июль 2008 Откуда: из города
Помог: 90 раз(а)
valenok пишет:
Нет. Эта функция проигнорирует заголовки.
Воспользуйтесь curl'ом.
Я имею ввиду, что нужно парсить каждую строку полученную с помощью fgets и выковыривать от туда значение Content-length
Гость
Отправлено: 20 Января, 2009 - 13:47:54
УДАЛЁН
$site_domain="site.ru"; // Сайт с нужным файлом
$site_file_path="/path/to/file.ext"; // Путь к нужному файлу
$site_timeout=10; // Время ожидания
$header_size=2048; // Примерный размер заголовка в байтах Этот параметр надо устанавливать очень осторожно ибо если поствить слишком мало то можно не считать заголовок а если много то пойдет считываеть тело файла
// В переменной $file_header получили заголовки от файла В них надо с помощью регуляронго выражения выбрать Content-length
Ch_chov
Отправлено: 20 Января, 2009 - 15:45:03
Постоянный участник
Покинул форум
Сообщений всего: 2121
Дата рег-ции: Июль 2008 Откуда: из города
Помог: 90 раз(а)
А можете популярно объяснить, почему надо использовать socket_connect и socket_read, а не fopen и fgets.
Stierus
Отправлено: 20 Января, 2009 - 15:52:46
Рекордсмен по количеству сообщений за 7 дней
Покинул форум
Сообщений всего: 2132
Дата рег-ции: Дек. 2008 Откуда: Москваль
Помог: 52 раз(а)
Не буду лезть в то, что написано не мной, но я предлагал чтение заголовков, что бы не читать весь файл (хорошо, если он несколько килобайт весит, а если пару гигов? )
Гость
Отправлено: 20 Января, 2009 - 16:04:45
УДАЛЁН
Хм а кто сказал что в предложденном мною коде надо читать весь файл
Цитата:
$header_size=2048; // Примерный размер заголовка в байтах Этот параметр надо устанавливать очень осторожно ибо если поствить слишком мало то можно не считать заголовок а если много то пойдет считываеть тело файла
Хотя лучше было бы огранизовать конец заголовков поиском \n\n
Ch_chov Дело в том что если читать fgets то HTTP-заголовки игнорируются а ткт все будет
Ch_chov
Отправлено: 20 Января, 2009 - 17:07:18
Постоянный участник
Покинул форум
Сообщений всего: 2121
Дата рег-ции: Июль 2008 Откуда: из города
Помог: 90 раз(а)
Цитата:
если читать fgets то HTTP-заголовки игнорируются
Т.е. будет считано только тело страницы?
Гость
Отправлено: 20 Января, 2009 - 18:44:41
УДАЛЁН
Вот пример запроса картинки моего аватара на этом форуме:
Цитата:
telnet php.su 80
Trying 82.140.91.131...
Connected to php.su.
Escape character is '^]'.
GET /im/avatars/personal/1420-avatar .jpg HTTP/1.1\n
Host: forum.php.su\n\n
Если вы будете читать fgets то будут считываться строки начиная с той кторая выделена красным цветом (Байтовое предстваление картинки)
Если же работаь с помощью Sockets то будут считываеться все строки начиная с той которая выделена зеленым Те будут считываться все HTTP-заголовки
В вашем примсере нас интересует вся информация начиная с зеленой и вплоть до красной строки - это и есть HTTP-заголовок в котором содержится ався интересуемая о файле информация в тои числе и его размер
Кстати признаком конца заголовка является первая встретившаяся пустая строка (\n\n)
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.