Создание прослушивателя событий в PHP, ожидая содержимого XML

голоса
18

Мне нужно, чтобы создать прослушиватель событий. Я новичок, так будьте добры :)

В основном я на page1.php (PHP-файл); Я хочу, чтобы внутри цикла, чтобы пойти проверить page2.xml (файл XML) для некоторой информации, которая должна быть получена в какой-то момент. Или проверить это все время, или подождать, и через каждые 5 минут или около того, чтобы увидеть, если какая-то информация была получена там. Либо они работают для меня.

Если нет информации не было получено после того, как несколько минут, а затем я хочу снова запустить цикл (пока он не будет принят), в противном случае, двигаться вперед и делать что-то с моей недавно полученной информации. Эта часть у меня нет никаких проблем с, только сам слушатель события. Я не мог найти функцию следует использовать в любом месте. :( Мне нужно только, чтобы проверить и восстановить содержимое файла XML каждый так часто.

Я не уверен, как я должен идти об этом, если есть не только функция, которая делает это, но я не мог найти много, когда я искал «событие слушателя PHP».

Любая помощь будет оценена: ссылка на учебники / примеры кода / даже просто говорит мне, что ключевые слова, я должен искать или то, что мне нужно узнать сначала, чтобы сделать это.

Благодаря!

Задан 21/12/2011 в 23:17
пользователем
На других языках...                            


3 ответов

голоса
1

Ну, во-первых, вы должны понимать терминологию, которую вы используете. PHP не управляемые события языка, это запрос управляемого язык. Запрос приходит на веб-сервер, PHP обрабатывает его и посылает ответ обратно запрашивающему. Ни в одной точке есть события вызвали, что вы можете обрабатывать или обрабатывать. Вы можете реализовать свою собственную «систему событий», но в конечном счете, это гораздо больше работы, чем то, что влечет за собой использование вами случай.

Лучше всего, вероятно , с использованием AJAX и постоянно делает запросы на ваш PHP скрипт , пока вы не вернете данные , которые вы ищете. В конце концов вам нужно будет узнать о XMLHttpRequestобъекте JavaScript. После того, как вы понимаете , как сделать асинхронных запросов с использованием JavaScript вы можете посмотреть на setInterval()метод для того, как повторно сделать запрос.

После того, как вы можете повторно сделать асинхронных запросов должно быть относительно простой процесс создания веб-страницы, где вы можете вызвать запросы AJAX для отправки.


Там нет необходимости для цикла в вашем PHP коде. Цикл эффективно делается на другом конце. Вот текстуальное рабочий процесс, который вы могли бы следовать:

  1. Перейти на сайт предназначен для запуска ваших вызовов AJAX и вызвать их.
  2. Сделайте ваш запрос асинхронного на ваш PHP скрипт.
  3. Внутри ваш PHP скрипта открыть файл XML и проверьте, необходимое содержание.
  4. Возвращает ответ в виде объекта JSON. Один ответ может означать, что данные не были обновлены, а другой ответ означает, что данные были обновлены.
  5. Синтаксический ответ, если данные не был обновлен повтор со стадии (2). Если данные были обновлены переходите к шагу (6).
  6. Отображение праздничного приветствия, который был обновлен ваши данные или уведомления, что мы все еще ждем, чтобы данные были обновлены. Может быть, вы можете иметь количество попыток, а также, в сторону.
Ответил 21/12/2011 в 23:57
источник пользователем

голоса
0

Я сделал что-то вроде этого писать входящие парсер PHP. Вы лучший вариант заключается в следующем:

Код , page1.phpв котором вам просто нужно сделать 2 вещи: чтение XML с , page2.xmlи если есть что - то «новое» просто выполнить код данных разбора.

Настроить Cron работу (если вы под Linux) , чтобы выполнить каждые 5 минут или так (команда Cron это что - то вроде: php /path/to/page1.php). Точно так же, если вы работаете в Windows , вы можете настроить запланированное задание и выполнить ту же команду. Имейте в виду , что полный путь к вашей установке PHP должен быть в PATHпеременной окружения.

Ответил 22/12/2011 в 00:20
источник пользователем

голоса
1

Я сделал следующее:

Автоматически сохраняется в базе данных каждый раз, когда что-то новое пришло в.

Затем побежал цикл PHP , что каждые несколько минут проверить , чтобы увидеть , если есть что - то новое в базе данных , которая соответствует параметрам этого нового события ( в том числе , что он Произошел в сроках , в течение последних нескольких минут). Я использовал , flush();а затем sleep(120);в цикле , чтобы получить петлю , чтобы продолжать работать каждые несколько минут, пока новая информация не вошла в этом случае он break();или die();.

Ответил 03/01/2012 в 23:57
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more