|
|
|
| Подскажите такую вещь.
Есть блокнот содержащий 1000 строк
1||23||5454||545423||2311||5454
8||74||5444||465423||6781||5344 ...
Необходимо, при достижении 1001 строки удалить последнюю(внизу) и добавить новую(вверху).
Проще говоря в блокноте должна быть последняя 1000 записей.
Как добавить знаю, а вот как удалить правильно (с наименьшим поеданием ресурсов) не совсем.. | |
|
|
|
|
|
|
|
для: Ванек2010
(27.02.2012 в 13:57)
| | А где хранятся строки в файле или в БД? | |
|
|
|
|
|
|
|
для: Lotanaen
(27.02.2012 в 13:59)
| | в .txt блокноте | |
|
|
|
|
|
|
|
для: Ванек2010
(27.02.2012 в 13:57)
| | Содержимое отображается пользователю или вы используете его внутри программы? Т.е. так ли важно выдерживать прямой порядок (важный при отображении) следования записей? | |
|
|
|
|
|
|
|
для: cheops
(27.02.2012 в 14:02)
| | Показывается пользователям, да порядок важен, новые строки должны быть сверху | |
|
|
|
|
|
|
|
для: Ванек2010
(27.02.2012 в 14:03)
| | Самое простое (но требовательное к памяти) решение, это открыть файл при помощи функции file(), к полученному массиву добавить в начало новый элемент, посчитать количество элементов и все больше 1000 удалить. После чего объединить массив в строку при помощи implode() и записать в файл. Если объем файла не велик - все будет работать как часы. | |
|
|
|
|
|
|
|
для: cheops
(27.02.2012 в 14:07)
| | Можно по подробнее на счет "и все больше 1000 удалить". | |
|
|
|
|
|
|
|
для: Ванек2010
(27.02.2012 в 14:12)
| | В цикле прогоните массив, и когда счетчик цикла достигнет 1000 ко всем последующим элементам массива примените конструкцию unset(). На выходе у вас будет массив ровно с 1000 элементов. | |
|
|
|
|
|
|
|
для: cheops
(27.02.2012 в 14:17)
| | спасибо, но думал, что можно будет уйти от прогонки 1000 раз. | |
|
|
|
|
|
|
|
для: Ванек2010
(27.02.2012 в 14:20)
| | Можно и уйти, если вы знаете, что у вас 1000 строк и вы добавляете в начало одну строку, то и удалить вам нужно одну строку из конца и её индекс будет 999, т.е. вам фактически нужно произвести одно удаление unset($arr[999]). | |
|
|
|