ajax — запуск двух страниц одновременно в переполнении стека

Предположим, у меня есть четыре страницы (index.php, progressbar.php, buffering.php, trackvalue.php). Что я хочу сделать,

1

когда кто-то отправит значение из index.php, оно должно быть помещено в progressbar.php.

2

progressbar.php будет извлекать текущее значение состояния из текстового файла, созданного buffering.php.

3

buffering.php получит значение из index.php при первой отправке значения. И эта страница будет выводить значение прогресса в текстовом файле.

Поэтому я должен вызвать и отправить значение в buffering.php, пока кто-то нажимает кнопку отправки, но также должен попасть в файл progressbar.php, а не в файл buffering.php. Не говорите мне просто включить prgressbar.php в buffering.php, потому что я должен захватывать данные в реальном времени с этой страницы. И поскольку буферизация включена в buffering.php, я не могу этого сделать. Также не говорите мне отключить буферизацию вывода, по какой-то причине я не могу этого сделать.

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

-2

Решение

Подскажите пожалуйста как мне запустить скрипт в фоновом режиме
с передачей некоторого значения.

Страница PHP должна завершить обработку, прежде чем вы получите полный возврат.

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

Не связывайте index.php напрямую с buffering.php. Пусть он разберется с каким-то новым файлом, initiate.php. Когда вы делаете запрос к этой странице, чтобы «инициировать» вашу обработку, попросите ее создать запись о событии в таблице базы данных событий. Затем, initiate.php просто возвращает EventID, который был создан … фактически не выполняет буферизацию.

Превратите buffering.php в процесс cron, который просматривает таблицу Events, находит новые записи и начинает обработку в фоновом режиме. При желании он может обновить строку с% выполненной и т. Д.

progressbar.php может затем получить EventId, запросить% complete в БД и вернуть это значение в index.php, чтобы вы могли показать прогресс, пока он ожидает процесс cron. Когда он будет завершен, перенаправьте или загрузите все ваши полные данные для отображения пользователю.

Суть в том, что вам нужен некоторый фоновый процесс, который может выбрать событие из сценариев, которые вы используете в данный момент, так что ничто из того, что вы вызываете из index.php, не должно ждать всего времени выполнения процесса.

Это может быть сделано с системой MessageQueue, с системой в памяти, такой как MemCache, или с таблицей БД, как я описал …

2

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

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

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector