json — контролирует внешний процесс с помощью переполнения стека

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

Когда пользователь щелкает, чтобы запустить процесс, объект JSON отправляется веб-службе, которая (используя PHP) запускает процесс, как показано ниже:

<?php
$params = json_decode($_POST["object"]);
/** Do something with the params **/

// Start a external process in background (I'm using 'ls' as an example)
exec("ls &", $output);

/** Finish the script **/

Проблема в том, что этот внешний процесс может занять несколько минут. Итак, я хотел бы дать возможность остановить это. Я хочу, чтобы: когда пользователь нажимал кнопку «стоп», он отправлял объект JSON веб-службе (конечно, на том же сервере), чтобы остановить процесс.

Как мне отслеживать внешний процесс? Как я могу заставить его остановиться, если это необходимо? И как я могу заставить пользователя контролировать его?
Возможно ли это в PHP?

0

Решение

Когда вы начинаете свой процесс с & процесс выполняется в фоновом режиме, и вы получаете идентификатор процесса в качестве возврата. Таким образом, вы можете сохранить этот pid в сеансе, например, и при необходимости убить этот процесс.

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

0

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

Может быть, вы должны использовать Cron. Когда пользователь нажал кнопку запуска процесса, php изменил значение, например, в mysql. Крон каждую минуту проверяет значение базы данных и может начать процесс.

0

По вопросам рекламы [email protected]