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]   

> Без описания
Jetro
Отправлено: 26 Декабря, 2013 - 05:25:09
Post Id


Новичок


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


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




Вот так, даже не смог сформулировать внятного названия темы.

Имеется отображаемый PHP файл "index.php", в который инклудом подключается PHP файл "load.php", который в свою очередь с помощью "simplexml_load_file" подгружает "data.xml" с данными. В XML-файл периодически добавляются данные.
Хочется сделать так, чтобы при просмотре "index.php", файл "load.php" обновлялся в случае изменения "data.xml".
Сделать периодическое обновление "load.php" по времени дело нехитрое - в инете куча примеров на jQuery. Но это ведь некошерно, это сейчас там пару байт, но позже файл то разростется. Зачем издеваться над сервером? По этому задумал сделать обновление страницы только в случае изменения XML-файла, но вот с чего начать - не представляю.
Думаю вполне достаточно будет хотя-бы толчка в нужном направлении.
 
 Top
kotyara1979
Отправлено: 26 Декабря, 2013 - 05:55:00
Post Id


Частый гость


Покинул форум
Сообщений всего: 247
Дата рег-ции: Окт. 2012  


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




Цитата:
Сделать периодическое обновление "load.php" по времени дело нехитрое - в инете куча примеров на jQuery. Но это ведь некошерно, это сейчас там пару байт, но позже файл то разростется.


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

(Отредактировано автором: 26 Декабря, 2013 - 05:58:09)



-----
Сделать можно все. Главное одеть каску.
 
 Top
likvidator
Отправлено: 26 Декабря, 2013 - 13:42:30
Post Id


Посетитель


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


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

[+]


Первое,что пришло в голову - при первой загрузке читаем файлик и запоминаем номер последней строки,дальше тямем все,что после,если вытянули чего - запомнили и по кругу

(Отредактировано автором: 26 Декабря, 2013 - 13:46:29)

 
 Top
caballero
Отправлено: 26 Декабря, 2013 - 13:59:49
Post Id


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


Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011  
Откуда: Харьков


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




simplexml парсит быстро - не стоит заморачивтся
а если данных станет много то все равно их нет смысла выводить пользователю в полном обеме.


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
Zuldek
Отправлено: 26 Декабря, 2013 - 14:08:05
Post Id


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


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


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




Создайте кеш с объектом/массивом распарсенного файла в который также запишите размер исходного файла.
При необходимости выгрузить данные в приложении проверьте свойства текущего файла. Если размер файла больше сохранённого значения на нужную величину, то парсите и перезаписывайте кэш, если нет, то отдавайте массив из текущего кеша.
Если есть строгая необходимость производить сам факт выгрузки файла лишь после его непосредственного изменения и нет возможности пинать лоудер вместе с выгрузкой изменённого xml-файла, то создайте слушатель свойств xml-файла.
Оптимальный способ реализации слушателя может варьироваться в зависимости от среды работы приложения. Можно использовать как встроенные в ОС сервера, так независимые библиотеки. Например libev. Количественные измерения задачи отсутствуют потому сложно посоветовать оптимальный вариант решения.

(Отредактировано автором: 26 Декабря, 2013 - 14:25:49)

 
 Top
Jetro
Отправлено: 26 Декабря, 2013 - 17:15:46
Post Id


Новичок


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


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




kotyara1979 пишет:
А кто мешает сначала проверить изменился файл с данными или нет, и только если изменился делать обновление нужной части страницы?

До этого я и сам додумался. А вот как проверку реализовать? Вот в чем вопрос был.

likvidator пишет:
Первое,что пришло в голову - при первой загрузке читаем файлик и запоминаем номер последней строки,дальше тямем все,что после,если вытянули чего - запомнили и по кругу

Обычно проверяют или дату изменения файла, или размер, но чтобы проверять количество строк... думаю мороки много будет.

caballero пишет:
simplexml парсит быстро - не стоит заморачивтся
а если данных станет много то все равно их нет смысла выводить пользователю в полном обеме.

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

Zuldek, знания PHP не на том уровне, чтобы создавать кеш с данными. Тем более хочется очень простого и красивого решения. Думаю такой вариант мне не подойдет.
Никаких строгих необходимостей нет, хочется всего лишь отображать актуальные данные на открытой странице без нужды её постоянно обновлять.
Самое простое решение это регулярное обновление инклуда по таймеру. Это пройдет если частота обновления данных будет очень большой (несколько раз в минуту). А если обновленные данные будут появляться с частотой один-два раза в день, то смысла обновлять страницу каждых несколько секунд попросту нет.
А каким образом можно узнать размер файла? В гугле куча обсуждений проверки размера файла на диске пользователя, но о проверке размера на сервере не удалось найти ни слова. Думаю можно размер файла хранить не в массиве данных, а, например в отдельном файле, перезаписываемым страницей.
 
 Top
kotyara1979
Отправлено: 26 Декабря, 2013 - 18:34:47
Post Id


Частый гость


Покинул форум
Сообщений всего: 247
Дата рег-ции: Окт. 2012  


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






-----
Сделать можно все. Главное одеть каску.
 
 Top
bestbios
Отправлено: 28 Декабря, 2013 - 14:33:18
Post Id



Гость


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


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




md5 check sum имхо
 
 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