Точнее там одна строка километровая.
Я его читаю fgets-ом и пытаюсь распарсить на 2 части.
Читается но при попытке распарсить explode_ом или preg_match_all-ом вываливается ошибка что не хватает памяти.
Пробовал читать fread по кускам он просто читает без ошибки но не все. Где-то обрезается.
Что посоветуете?
Спустя 27 минут, 33 секунды (30.11.2010 - 11:32) linklink26 написал(а):
Вот код. Не получается отсеить все что выше "Dumping data for"
$fp=fopen($file, 'r');
while (! feof($fp) ) {
$file_text .= fread($fp,2000);
}
fclose($fp);
$file_text_mass = explode("Dumping data for", $file_text);
Спустя 1 час, 43 минуты, 26 секунд (30.11.2010 - 13:16) vergin написал(а):
фраза "Dumping data for" встречается единажды в тексте?
Спустя 1 час, 58 минут, 21 секунда (30.11.2010 - 15:14) linklink26 написал(а):
да
Спустя 12 часов, 16 минут, 31 секунда (1.12.2010 - 03:30) Crater написал(а):
Зачем preg_match_all ? Насколько мне известно, он нужен для возврата массива значений, соответствующих макету. А раз соответствие заведомо одно, сойдёт и preg_match.
Спустя 14 часов, 45 минут, 4 секунды (1.12.2010 - 18:16) vergin написал(а):
попробуй, читая по-частям, проверять каждую часть на наличие требуемой фразы. И все, что было до нахождения стоп-фразы - это и будет твой дамп, а все что после - читаться не будет
Спустя 34 минуты, 15 секунд (1.12.2010 - 18:50) Dron19 написал(а):
Пробуй так:
Если сработает поставь плюс =)
<?
error_reporting (0);
$fp=fopen($file, 'r');
$file_text = fread($fp,filesize($file)) or die("Не удалось прочитать файл, так как он пустой!");
fclose($fp);
if($file_text)
$file_text_mass = explode("Dumping data for", $file_text);
unset($file_text);
echo $file_text_mass[1];
?>
Если сработает поставь плюс =)
Спустя 37 минут, 9 секунд (1.12.2010 - 19:27) Dron19 написал(а):
Что бы fread не обрезал вывод файла, нужно указать его размер, а у тебя кажись файл дамп не 2кб весит, ты указал 2000, то есть читает 2000байт, а дальше забывает про все оставшиеся, так что используй функцию filesize();
Функция feof(); тут тоже практический не нужна
Функция feof(); тут тоже практический не нужна
Спустя 4 дня, 20 часов, 43 минуты, 55 секунд (6.12.2010 - 16:11) linklink26 написал(а):
В общем fread мой огромный файл прочитать таки не смог.
Зато сработало file($file);
Сразу все в массив, а потом уже там с ним разбирался такими способами что лучше сюда это не постить)))
Зато сработало file($file);
Сразу все в массив, а потом уже там с ним разбирался такими способами что лучше сюда это не постить)))
Спустя 54 минуты, 51 секунда (6.12.2010 - 17:06) Invis1ble написал(а):
Цитата |
вываливается ошибка что не хватает памяти |
можно еще попробовать ini_set('memory_limit', 0); но думаю, что это костыль, причем опасный...
Спустя 4 часа, 21 минута, 19 секунд (6.12.2010 - 21:27) SlavaFr написал(а):
Цитата (linklink26 @ 30.11.2010 - 08:05) |
Точнее там одна строка километровая. |
Цитата (linklink26 @ 6.12.2010 - 13:11) |
Зато сработало file($file); |
и теперь километровая строчка в масиве должна чтото изменить?
Спустя 1 день, 12 часов, 46 минут, 41 секунда (8.12.2010 - 10:14) linklink26 написал(а):
SlavaFr
Конечно, массив бьется на маленькие массивчики и с ними работаю. А так была просто ошибка.
Конечно, массив бьется на маленькие массивчики и с ними работаю. А так была просто ошибка.
Спустя 2 часа, 17 минут, 17 секунд (8.12.2010 - 12:31) SlavaFr написал(а):
как бьется?
Спустя 1 день, 2 часа, 42 минуты, 14 секунд (9.12.2010 - 15:13) linklink26 написал(а):
SlavaFr
Фор n строк, внутри накопитель, потом создаю новый файл в который кладу содержимое и закрываю, и по кругу.
На выходе куча мелких файлов
Фор n строк, внутри накопитель, потом создаю новый файл в который кладу содержимое и закрываю, и по кругу.
На выходе куча мелких файлов
Спустя 1 месяц, 20 дней, 4 часа, 33 минуты, 26 секунд (1.02.2011 - 19:47) Dron19 написал(а):
кстати функция file работает быстрей fopen, fread и f puts, тем более вместе взятых
еще кстати можно было с помощью fgets или fgetc или file_get_contents, а также readfile - способов много, а если с помощью функции файл, то можно просто вот так
и тот вариант который я тебе дал ложовый
еще кстати можно было с помощью fgets или fgetc или file_get_contents, а также readfile - способов много, а если с помощью функции файл, то можно просто вот так
$join = join('',file('file.dat'));
и тот вариант который я тебе дал ложовый