![]() |
Php и тектовые файлы
У меня вопрос, связанный с попыткой перейти с Perl на PHP.
В Perl есть очень удобный модуль DB_File, который позволяет работать с тектовым файлом как с одномерным массивом, где каждый элемент - строка.То есть одним оператором я могу поменять конкретную строку в файле по ее номеру, удалить строку, добавить/удалять строки в начале или конце файла и т.д. Есть ли подобная вещь в PHP? |
Есть, нет ... писать пять минут. Чтобы открыть файл как массив строк, используй file() ... хочешь поменять по номеру - измени в массиве, затем implode("\r\n",$file_arr) и fwrite() ...
|
Спасибо за совет, но, видимо, я не совсем ясно пояснил, что имею в виду.
То, что предлагаешь ты , состоит из нескольких этапов: 1) считывание файла в память ЦЕЛИКОМ 2) обработка в памяти 3) запись в файл целиком. Это очевидный вариант, но он обладает рядом существенных минусов: 1) происходит чтение/запись ОГРОМНОГО массива данных 2) необходимо заботится о блокировки файла на время работы с ним и т.д и т.п. Меня же интересует вариант другой. Я привязываю к идентификатору файл таким образом, что для меня он выглядит уже как массив. Я обращаюсь к его конкретной строке по ее номеру, и модуль сам находит ее и делает что мне надо. При этом он работает только с нужной мне строкой. Фактически это работа с DBM-базой данных. Пример: у меня есть текстовый конфикурационный файл, в первой строке которого находится счеткик. Тогда чтобы мне считать текушее его показание для использования в дальнейшем, при этом увеличив индекс на 1 надо всего лишь 3 строки + добавление модуля в начале скрипта (код дан на Perl): Код:
use DB_File; |
Я бы на твоем месте не изобретал велосипед и использовал БД.
|
| Часовой пояс GMT +4, время: 11:08. |
Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.