• Главная
  • » PHP
  • » Помогите с чтением большых фалов

#1 2009.12.29 16:06

TLENS
Moderator
Откуда: Украина
Зарегистрирован: 2009.04.05
Сообщений: 2402
Карма: 14
Профиль

Помогите с чтением большых фалов

Вот ситуация такова немогу обработать файл до конца

Код:

1
lt;?$fr=fopen('file1','r');$fp=fopen('file2','a');$i=0;while(!feof($fr) || $i==50) { ++$i; $f=fread($fr, 102400)//Обработка $f fputs($fp,$f); unset($f); }fclose($fr);fclose($fp);

Сервер обработает гдето 48 мб.
Вопрос как продолжить обработку при новом обновлении например:
fillesize('file1'); //=800mb а
filesize('file2'); //=48mb
Как начать обработку с filesize('file2') а не с начала?

Отредактировано TLENS (2009.12.29 16:13)

Неактивен

#2 2009.12.29 16:13

Gemorroj
Administrator
Откуда: Белоруссия
Зарегистрирован: 2007.11.03
Сообщений: 6593
Карма: 107
Профиль Веб-сайт

Re: Помогите с чтением большых фалов

сколько по времени занимает обработка? вероятно, дело не в расходе оперативной памяти, а превышении максимального отведенного времени на работу скрипта.
банально set_time_limit

Неактивен

#3 2009.12.29 16:44

TLENS
Moderator
Откуда: Украина
Зарегистрирован: 2009.04.05
Сообщений: 2402
Карма: 14
Профиль

Re: Помогите с чтением большых фалов

Да нет оперативку же сразу после записи чищу.
Грузит долго потом таймаут.
Док вот чего я и хочу чтобы обработать кусочками по 5 мб за одно выполнение.
Но fread() при новом выполнении начинает обрабатывать сначала.
Вопрос состоит в том можно ли указать фрейду с какого места начинать. например как в дозагрузке Рангес bites='.filesize('file2').'-'.filesize('file1');
ну если фрейд такого не умеет может какаято другая функция?

Отредактировано TLENS (2009.12.29 16:45)

Неактивен

#4 2009.12.29 17:01

Gemorroj
Administrator
Откуда: Белоруссия
Зарегистрирован: 2007.11.03
Сообщений: 6593
Карма: 107
Профиль Веб-сайт

Re: Помогите с чтением большых фалов

Неактивен

#5 2009.12.29 17:12

TLENS
Moderator
Откуда: Украина
Зарегистрирован: 2009.04.05
Сообщений: 2402
Карма: 14
Профиль

Re: Помогите с чтением большых фалов

Спасибо то что надо.
вот только там написано что функця не смещает если соединение открыто через http Почему так у меня сместило?

Неактивен

#6 2009.12.29 18:37

Gemor
Гость

Re: Помогите с чтением большых фалов

Где такое написано?

#7 2009.12.29 22:19

TLENS
Moderator
Откуда: Украина
Зарегистрирован: 2009.04.05
Сообщений: 2402
Карма: 14
Профиль

Re: Помогите с чтением большых фалов

На php.su текстовый с текстовым файлом работаетпа вот бинарный не хочет отступить хоть и флажок стоит rb есть еще подобная функция?

Неактивен

#8 2009.12.29 22:27

Gemor
Гость

Re: Помогите с чтением большых фалов

Доки читай на php.net а не php.su
флаг b требуется только на винде. код давай.

#9 2009.12.29 22:50

TLENS
Moderator
Откуда: Украина
Зарегистрирован: 2009.04.05
Сообщений: 2402
Карма: 14
Профиль

Re: Помогите с чтением большых фалов

Код:

1
span style="color: #0000BB"><?php$fn='http://f.spaces.ru/fff/3147604116015502/0/871924/spaces_ru_871924.mp3';$name=preg_replace('/.*\//si','',$fn);$potok=1000;$h=get_headers($fn);$getsize=(int)preg_replace('/.*Content-Length:.(.*?)\|.*/si','$1',implode('|',$h));$filesize=@filesize($name); $fr=fopen($fn,'rb'); $fp=fopen($name,'ab'); if($filesize<$getsize) { @fseek($fr, $filesize); while(!feof($fr)) { ++$i; $f=fread($fr, 1024); fputs($fp,$f); unset($f); if($i==$potok){break;} } } else { echo 'ok'; } fclose($fp); fclose($fr);echo filesize($name);echo'<META HTTP-EQUIV="REFRESH" CONTENT="0">';?>

Неактивен

#10 2009.12.29 23:05

TLENS
Moderator
Откуда: Украина
Зарегистрирован: 2009.04.05
Сообщений: 2402
Карма: 14
Профиль

Re: Помогите с чтением большых фалов

Почему ето mp3шку кусками зописало тоить з кусочка вклеяны в одно токо начало

Отредактировано TLENS (2009.12.30 04:37)

Неактивен

  • Главная
  • » PHP
  • » Помогите с чтением большых фалов

Дополнительно

forum.wapinet.ru

PunBB Mod v0.6.2
0.013 s