Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Поиск и редактирование информации в текстовом файле

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: поиск и редактирование позиций файла
loveaboveall
Отправлено: 07 Мая, 2014 - 15:22:05
Post Id


Новичок


Покинул форум
Сообщений всего: 5
Дата рег-ции: Май 2014  


Помог: 0 раз(а)




Всем добрый день. Прошу гуру php подсказать, как можно реализовать следующую идею... Есть текстовый файл на сервере, в который ведется статистика посещений. Файл в следующем формате (построчно, через пробелы):

[ip-адресс] [кол-раз посещений] [время последнего захода] [браузер]

Стоит особая проблема в редактировании уже имеющейся информации. Например, надо сначала сделать поиск в файле, есть ли такой ip, далее увеличить [кол-раз посещений] на 1 и переписать [время последнего захода] и [браузер]. Как это сделать средствами PHP с учетом того, что строк в файле может быть много, и брать целиком содержимое по file_get_contents не целесообразно, так-как может быть множественное подключение? Открывать и считывать по fopen и fread - это надо будет все равно считывать весь файл чтобы найти нужную строку с IP....

Заранее спасибо!

(Отредактировано автором: 07 Мая, 2014 - 15:28:11)

 
 Top
Мелкий Супермодератор
Отправлено: 07 Мая, 2014 - 15:28:35
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Используйте sqlite хотя бы.

Как переписать значение в середине файла:
Сохранить куда-нибудь всё, начиная с позиции редактируемой строки, записать новую версию строки, записать всё, что было после редактируемой строки.


-----
PostgreSQL DBA
 
 Top
Zuldek
Отправлено: 07 Мая, 2014 - 15:33:51
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2122
Дата рег-ции: Июнь 2010  


Помог: 50 раз(а)




Возможно огорчу, но нельзя найти строку в файле не считав весь ваш файл.
Если религия требует сохранения данных в таком формате и использовать строго файлы, то я бы использовал xml-эквивалент с которым бы комфортно работал средствами SimpleXML или DOM или чем хотите, формируя после изменений ваш текстовый файл.


upd. sqllite также хорошее предложение (если он есть), хотя придётся постоянно держать позицию строки в файле. Всёравно костыль на костыле.

(Отредактировано автором: 07 Мая, 2014 - 15:40:59)

 
 Top
loveaboveall
Отправлено: 07 Мая, 2014 - 15:40:32
Post Id


Новичок


Покинул форум
Сообщений всего: 5
Дата рег-ции: Май 2014  


Помог: 0 раз(а)




Zuldek пишет:
не считав весь файл

да считать полностью файл это просто и быстро и можно распарсить, но как быть, если в одно и тоже время будет несколько обращений к файлу и попыток на запись?

Zuldek пишет:
то я бы использовал xml-эквивалент

нет-нет структура файла может быть и html и xml, не важно, это приблизительный результат как должно выглядеть для админа, который будет смтореть, суть в том, чтобы не использовать SQL, а именно в файловой системе рабоать. Возможны есть гораздо простые варианты , суть проста, счетчик посещений и хранения этого в файловой системе...

(Отредактировано автором: 07 Мая, 2014 - 15:41:20)

 
 Top
Zuldek
Отправлено: 07 Мая, 2014 - 15:43:46
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2122
Дата рег-ции: Июнь 2010  


Помог: 50 раз(а)




loveaboveall пишет:
нет-нет структура файла может быть и html и xml, не важно, это приблизительный результат как должно выглядеть для админа, который будет смтореть, суть в том, чтобы не использовать SQL, а именно в файловой системе рабоать. Возможны есть гораздо простые варианты , суть проста, счетчик посещений и хранения этого в файловой системе...

Радость
Тогда формулировать нужно вопрос, как задачу, а не как костыльный приговор.
В данном случае, имхо, работа c XML будет проще ибо предустановлены инструменты.

Либо no-sql решения, если есть возмодность их установки.
 
 Top
loveaboveall
Отправлено: 07 Мая, 2014 - 15:46:50
Post Id


Новичок


Покинул форум
Сообщений всего: 5
Дата рег-ции: Май 2014  


Помог: 0 раз(а)




как будет выглядеть решение , если использовать xml например ? (какой нибудь пример) я в xml-e полный ноль

и снова вопрос о множественном подключении...

(Отредактировано автором: 07 Мая, 2014 - 15:48:31)

 
 Top
Zuldek
Отправлено: 07 Мая, 2014 - 15:51:06
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2122
Дата рег-ции: Июнь 2010  


Помог: 50 раз(а)




loveaboveall пишет:
будет несколько обращений к файлу и попыток на запись?

А для этого придуманы реляционные базы данных. sqllite в данном случае будет накладывать точно такое же ограничение на одновременную запись несколькими клиентами
Соответственно, можно писать в бд и периодически формировать ваш файл в нужном формате, если он нужен.

(Отредактировано автором: 07 Мая, 2014 - 15:54:06)

 
 Top
loveaboveall
Отправлено: 07 Мая, 2014 - 15:54:04
Post Id


Новичок


Покинул форум
Сообщений всего: 5
Дата рег-ции: Май 2014  


Помог: 0 раз(а)




Zuldek пишет:
loveaboveall пишет:
будет несколько обращений к файлу и попыток на запись?

А для этого придуманы реляционные базы данных. sqllite в данном случае будет накладывать точно такое же ограничение на одновременную запись.
Соответственно, — можно писать в бд и периодически формировать ваш файл в нужном формате, если он нужен.


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

(Отредактировано автором: 07 Мая, 2014 - 15:55:18)

 
 Top
Zuldek
Отправлено: 07 Мая, 2014 - 15:57:33
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2122
Дата рег-ции: Июнь 2010  


Помог: 50 раз(а)




loveaboveall пишет:
И открывать подключение к базе при каждом входе пользователя на сайт
Если есть необходимость в использование бд, то разумеется.
 
 Top
loveaboveall
Отправлено: 07 Мая, 2014 - 15:59:41
Post Id


Новичок


Покинул форум
Сообщений всего: 5
Дата рег-ции: Май 2014  


Помог: 0 раз(а)




Zuldek пишет:
loveaboveall пишет:
И открывать подключение к базе при каждом входе пользователя на сайт
Если есть необходимость в использование бд, то разумеется.


имеется ввиду только для счетчика есть ли необходимость гонять БД ? так БД не нужна. сайт без БД.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Работа с файловой системой и файлами »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB