Переключатель мертвеца в PHP/Python

Так что это в большей степени теоретический вопрос, чем -специфический для языка, но подумайте об этом:

Мне нужен PHP для выполнения довольно системного -интенсивного процесса (с использованием PHPexec();)который будет работать в фоновом режиме, но затем, когда пользователь покинет эту конкретную страницу, процесс будет уничтожен.

Я быстро понял, что переключатель мертвеца будет простым способом реализовать это, поскольку я не использую какие-либо переменные сеанса или другие сторонние переменные сервера -, которые могут в конечном итоге выглядеть как:

if($_SERVER['REQUEST_URI'] !== 'page_with_session.php'){
    //Instead of 'session_destroy();' this would be used to kill said process
}

В любом случае, цикл while в PHP, сброс таймера в скрипте Python или повторный -вызов указанного скрипта каждые 15 секунд, чтобы он не дошел до конца и не убил процесс. Однако, когда пользователь покинет страницу, скрипт будет вызван, но не сможет перезагрузиться до завершения процесса.

Есть ли в этой идее зияющие дыры? Если нет, то как будет выглядеть реализация на PHP/JS? Порядок, в котором я вижу, как это работает, будет:

  1. Страница открыта пользователем
  2. <?php exec('killer.py') ?>
  3. killer.py:
    1. Слушайте 20 секунд -Если нет ответа...
    2. os.system('pkill process')
  4. <?php while(true){sleep(15); exec('killer.py no_wait_dont');} ?>

Любые мысли, которые у вас есть, ребята, будут очень признательны!

Мейсон

5
задан MasonWinsauer 2 August 2012 в 21:55
поделиться