javascript — PHP Отображение выходных данных скрипта на активной странице

У меня есть веб-приложение на PHP. Одним из компонентов приложения является отправка данных в бэкэнд-конвейер (также написанный на PHP). Конвейер является внешним скриптом, с помощью которого мое приложение вызывает ‘Exec’ функция php. Конвейер представляет собой многошаговый конвейер, который выполняет несколько программ, получая данные от ранее запущенной программы. Я хочу иметь возможность отображать на странице приложения сообщение, которое отправляется в конвейер, с завершением каждого шага в конвейере, например

Шаг 1 завершен … Сейчас делаем шаг 2.
Шаг 2 завершен … Сейчас делаем шаг 3.

и так далее и тому подобное.

Я готов использовать javascript / AJAX для этого, а также любой другой язык, совместимый с PHP.

Любая помощь с благодарностью.

0

Решение

Хорошо работая в предположении, что у вас есть какая-то база данных, поддерживающая ваш интерфейс и конвейер PHP, вам не нужно что-то конкретно совместимое с PHP, а скорее что-то, что может взаимодействовать с вашей базой данных.

Не имея дополнительной информации о том, что вы настроили / попробовали и т. Д., Я могу только предложить обзор рабочего процесса, который я бы использовал в этой ситуации.

  • Интерфейсный сценарий передается и помещает запрос в очередь обработки.
  • Пользователю показывается страница типа «обработка, пожалуйста, подождите». На этой странице выполняется длинный запрос AJAX или соединение Websocket с интерфейсным сайтом для сценария, который опрашивает базу данных на предмет обновлений конвейерной обработки.
  • Сценарии конвейера связывают друг с другом и помещают в базу данных детали их завершения, которые считываются интерфейсным сценарием Websocket / long-polling и возвращаются пользователю через Javascript для отображения на странице.

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

РЕДАКТИРОВАТЬ

Хотя у меня нет ссылок на учебник о том, что именно вы хотите сделать, за ним есть некоторые основы, которые вы можете использовать, чтобы собрать воедино ваше решение:

Я бы начал с того, чтобы заставить ваш конвейерный (обрабатывающий) скрипт запускаться в фоновом режиме с интервалом, используя cron. В качестве альтернативы вы можете демонизировать этот конвейер, используя что-то вроде это PHP-Daemon Framework так что он работает в фоновом режиме. Возможно, наличие задачи cron, чтобы проверить, работает ли она, и перезапустите ее, если это необходимо.

Оттуда вы можете создать таблицу в вашей базе данных, которая будет содержать обновления статуса для текущих задач обработки и создать сценарий PHP, который проверяет состояние данной задачи и выводит данные JSON о ней. Эти данные JSON могут быть легко прочитаны с использованием запросов AJAX, самый простой из которых, вероятно, будет Метод jQuery .ajax (). Это можно вызывать с интервалом на стороне клиента на странице состояния, используя setTimeout звоните в конце каждого «цикла», чтобы опросить изменения статуса каждые X секунд. Это будет самая простая реализация того, что вам нужно, хотя и не самый эффективный или оптимальный способ сделать это.

Таким образом, общий рабочий процесс здесь изменится на это:

  • Интерфейсный сценарий передается и помещает запрос в очередь обработки с состоянием, установленным как ожидающее.
  • Пользователь показывает страницу обработки, которая пингует status.php?task=12345 каждые х секунд.
  • Внутренний сценарий daemon / cron принимает запрос и начинает обработку, периодически отправляя обновления статуса в базу данных.
  • status.php Сценарий начинает возвращать различную информацию о состоянии в коде JSON и отображается пользователю.
2

Другие решения

Других решений пока нет …