извлекать непрерывный поток данных XML, декодировать его и помещать в БД - PullRequest
0 голосов
/ 31 мая 2011

Я пытаюсь создать приложение, которое извлекает непрерывные потоки XML-данных, которые постоянно меняются каждую секунду, затем декодирует их и вставляет в базу данных mysql. Таким образом, этот сценарий, вероятно, должен выполняться на сервере без какого-либо графического интерфейса. Но со стороны клиента (из браузера) пользователь должен иметь возможность запустить или остановить процесс выгрузки.

То есть сценарий должен в основном выполнять это.

 while($dump == true)
    {
    $fetchxml = "http://agent.getstream.org/sample?from=$seq";
    $seq = $fetchxml["nextsequence"];
    $somedata = $fetchxml["sumdata"];
    mysqlinsert_db;
    }

чтобы из браузера, если я нажму кнопку на стороне сервера, я смог получить ее и изменить $ dump на true или false в зависимости от того, нажата ли кнопка запуска или остановки.

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

Ответы [ 2 ]

0 голосов
/ 31 мая 2011

Вы хотите, чтобы процесс на сервере остановился и перезапустился из другого процесса.

Один из способов остановить непрерывный процесс - использовать файл блокировки.

while (true) {
   if (file_exists('continue.tmp')) {
      // Do whatever is done
   } else {
     // do nothing for a minute
     sleep(60);
   }
}

Другой процесс просто выбрасывает continue.tmp, чтобы остановить обработку, и создает ее для возобновления.

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

0 голосов
/ 31 мая 2011

Учитывая, что этот скрипт будет запущен в CLI, у вас есть 2 способа его контролировать. Я скажу тебе, что бы я использовал.

while(true) {
  //> do your operations
  include('control.php');
}

Если вы хотите остановить это, вам просто нужно поставить exit; в control.php.
Конечно, вы можете ввести любые переменные / объекты, если вам нужны дополнительные элементы управления.

Что касается части для извлечения, вы можете просто использовать file_get_contents и simpleXML класс для обработки данных

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...