У меня есть веб-страница, где я показываю статус некоторых процессов (в таблице, по одной строке для каждого процесса). У пользователя есть возможность запустить процесс или заставить его остановиться.Управление внешним процессом с помощью PHP
Когда пользователь нажимает, чтобы начать процесс, объект 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?
Я попробую. Но что, если пользователь потерял сессию? =/ – Rick
Я не знаю, как долго работает ваш скрипт. Сохраните время начала и pid в базе данных и очистите его cron каждые несколько минут. – Stony
Я попробовал небольшой пример, но 'exec' не дает pid. Есть ли какая-нибудь другая команда PHP, которая может дать мне эту информацию? – Rick