Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Открытие больших файлов, Как сделать? 
V
    Опции темы
YURIC
Дата 16.8.2006, 09:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 161
Регистрация: 5.8.2003

Репутация: нет
Всего: 1



Здраствуйте, спасите пожалуйста

Код

set_time_limit(0);
ini_set("memory_limit", "1500M");
fopen($filename,'r') or die('file error '.$filename);
$cnt = fread($fh,filesize($filename));
fclose($fh);
$lines = explode("\n",$cnt);
// Дальше обработка массива $lines


Вопрос: если файл до 20М, то все ок, если больше блокируется провайдером, LIMIT MEMORY, вот как прочитать файл блоками по 10 метров?

Добавлено @ 09:33 
а еще лучше например по 1000 строк 

 smile  smile  smile 
PM MAIL   Вверх
solenko
Дата 16.8.2006, 10:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1473
Регистрация: 15.1.2006
Где: Украина

Репутация: 34
Всего: 67



можно по идее через cURL попробовать... там есть такая весчь как
CURLOPT_RESUME_FROM -- Задает позицию в файле в байтах, с которой начнется передача данных



--------------------
Ла-ла-ла-ла
Заметьте, нет официального подтверждения, что это не просто четыре слога.
PM MAIL WWW ICQ Skype   Вверх
YURIC
Дата 16.8.2006, 10:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 161
Регистрация: 5.8.2003

Репутация: нет
Всего: 1



Не поделишься примером  smile 
PM MAIL   Вверх
ewolf
Дата 16.8.2006, 11:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 389
Регистрация: 15.8.2006
Где: г. Москва

Репутация: 8
Всего: 18



Ну так ты же сам считываешь сразу весь файл, попробуй считывать его частями

Код


$read_size = 1 * 1024 * 1024 ; // 1 мегабайт за раз

$f = fopen($filename,'r') or die('file error '.$filename);

while( !feof($f) )
{
    $cnt = fread($fh,$read_size);
    $lines = explode("\n",$cnt);
    // Дальше обработка массива $lines, учитывая, что после окончания обработки цикл может повториться

}
fclose($fh);


PM MAIL ICQ   Вверх
YURIC
Дата 16.8.2006, 12:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 161
Регистрация: 5.8.2003

Репутация: нет
Всего: 1



ewolf

ну первый метр я считаю, а как мне считать допустим третий?
PM MAIL   Вверх
Reptor
Дата 16.8.2006, 12:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1213
Регистрация: 29.12.2004

Репутация: 0
Всего: 0



Я точно не знаю на наверное можно воспользоваться функцией fseek
PM MAIL ICQ   Вверх
YURIC
Дата 16.8.2006, 13:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 161
Регистрация: 5.8.2003

Репутация: нет
Всего: 1



 smile 

ВОТ!
нашел решение:


Код

while (!feof ($fd)) {
    $buffer = fgets($fh, 4096);
    echo $buffer."<hr>";
}

PM MAIL   Вверх
ewolf
Дата 16.8.2006, 18:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 389
Регистрация: 15.8.2006
Где: г. Москва

Репутация: 8
Всего: 18



Абсолютно тоже самое, что и я написал (не считая, что ты читаешь файл по строкам и в качестве второго параметра указываешь размер строки)
PM MAIL ICQ   Вверх
YURIC
Дата 18.8.2006, 12:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 161
Регистрация: 5.8.2003

Репутация: нет
Всего: 1



ewolf

Да, спасибо, благодаря твоему посту я и решил свою проблему, респект!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0944 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.