Как я могу сохранить ресурс процесса из proc_open, чтобы позже проверить статус?

StackOverflow https://stackoverflow.com/questions/949437

Вопрос

Я управляю ш сценарий это запускает java - язык процесс через php на убунту сервер.Я использую proc_open для запуска процесса.обычно рабочий процесс выглядит следующим образом :

  • запросить страницу ->
  • скрипт выполняется (до тех пор, пока он не будет завершен) ->
  • страница результатов.

В моем случае скрипт выполняется параллельно, поэтому сервер не будет ждать завершения скрипта (иногда это занимает часы, поэтому он не может), поэтому мне нужно каким-то образом сохранить этот ресурс, чтобы следить за ним позже (состояние процесса или просто его остановка).).

Тип ресурса - "процесс", я использовал эту функцию get_resource_type получить_ресурс_типа за то, что получил это.

Сериализация не будет работать в этом случае - ресурс является исключительным для этого (вы можете посмотреть на http://il2.php.net/manual/en/function.serialize.php внутри поля параметров).

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

Это было полезно?

Решение

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

Я бы заглянул в расширение pcntl.Подсказка:Разветвление невозможно из среды веб-сервера по соображениям безопасности.

Другие советы

В моем случае скрипт выполняется параллельно, поэтому сервер не будет ждать, пока скрипт будет завершен (иногда это занимает часы, поэтому он не может) ..

Само по себе это не должно быть проблемой.У вас легко может быть долго работающий php-процесс, если он не инициирован с веб-сервера.Если вам нужно инициировать процесс из веб-приложения, я бы посоветовал вам вставить запись в таблицу базы данных, а затем запустить cronjob скрипт, который проверяет эту очередь и выполняет обработку.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top