Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > посимвольное считывание файла


Автор: chiffa_cff 17.5.2007, 22:06
Всем привет. Такая ситуация. Есть файл довольно таки большого размера. Читаю его посимвольно

$fp=fopen ("baza.txt", "r");
while (!feof($fp))
{
$order2=fgets ($fp,100);
}
fclose ($fp);

Такой вопрос как  сделать что бы если вдруг у пользователя оборвется конект то что бы вывод (чтение) файла начался с того же места где остановился при обрыве связи.....  Зарание всем спасибо smile

Автор: Glip 17.5.2007, 22:09
http://ru2.php.net/manual/en/function.fseek.php
оно ?

Автор: chiffa_cff 17.5.2007, 22:13
эммммммммм, fseek($fp, 0);

а параметр "0" это что?....

Автор: Glip 17.5.2007, 22:19
http://ru2.php.net/manual/ru/function.fseek.php

ну попробовали бы переключить язык smile

Автор: chiffa_cff 17.5.2007, 22:37
Код

Не может использоваться на файловых указателях, возвращённых функцией fopen(), если они используют форматы "http://" или "ftp://"


БЛин.... файл находжится на удаленном сервере.... обращение к нему как и будет либо по "http://" либо "ftp://"...

Автор: Glip 17.5.2007, 22:51
хм. тогда доки по протоколам как указывать смещение

Добавлено @ 22:52
и к стати в вопросе нет что файл находится не на той же системе где работает скрипт
$fp=fopen ("baza.txt", "r"); - где здесь можно понять что доступ к файлу по http или ftp ?

Автор: chiffa_cff 17.5.2007, 22:59
Извеняюсь за неточность....
Цитата

тогда доки по протоколам как указывать смещение


по подробнее можно?

Автор: Glip 17.5.2007, 23:01
к сожалению не занимался никогда такими делами. но всякие дакнлоадеры же закачивают файлы в несколько потоков задавая размер и смещение для каждой секции. следовательно это поддерживается протоколами.

Автор: chiffa_cff 17.5.2007, 23:15
ладно посибо за помощь. буду копать smile)))

Автор: Anarki 18.5.2007, 00:05
Пусть пользователь отсылает Range в запросе GET

Брать нужно значение отсюда $_SERVER['HTTP_RANGE'], если она есть значит юзер затребовал содержимое и указал Range(диапазон байт)

Из файла считывается информация и выводится в браузер с того места , с которого нужно. Для этого анализируется $_SERVER['HTTP_RANGE']

Range может быть таким
[start-]- Начиная со start(включительно)
[start-]-[end] От start до end(включительно)
-[num] Последние num байт
[num] Начиная со смещения num
0-0 Первый байт
-1 Последний байт
Еще могут быть списки интервалов.

Соответственно вместо start, end - номера байт


А в скрипте отдаются вот эти заголовки(через header() естественно)
Цитата

HTTP/1.1 206 Partial Content
Content-Range: bytes _позиция_старта_-_позиция_завершения_/_размер_файла
Content-Length: _сколько_качать_

И наверное Accept-Ranges: bytes

Советую использовать любой менеджер закачек, с возможностью докачки, чтобы протестировать свой скрипт smile

Автор: chiffa_cff 18.5.2007, 00:09
псиба чот откликнулся! а готовых примеров скриптов нету?............

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)