Есть ли способ убить программу PHP, пока она работает? - PullRequest
2 голосов
/ 01 октября 2011

Есть ли способ убить программу PHP, пока она работает? Я знаю, в Linux / Unix я могу сделать

ps -u [username]

И он скажет мне, какие процессы запущены. Чтобы остановить процесс, я просто ввожу

kill [process #]

В PHP есть какой-нибудь способ узнать, какие процессы в данный момент выполняются на удаленном сервере, и завершить работу отдельной программы? В идеале использовать exec ()?

Причина, по которой я спрашиваю, состоит в том, что я нахожусь в среде общего хостинга, и я работаю и тестирую свои программы непосредственно на сервере ... Время от времени я буду делать что-то глупое, например вводить смешное число циклов, случайно, где на самом деле может потребоваться от нескольких минут до часа.

Видя, что по этому вопросу практически нет информации, я подумал, что это будет интересный вопрос.

Спасибо!

Ответы [ 3 ]

1 голос
/ 01 октября 2011

если у вас есть какой-то бесконечный цикл или что-то еще, поместите это

    while(1){

    if(!file_exists("continue.txt")){
    die("Stop");
    }

//Your Code here.

    }

, чтобы при удалении этого файла "continue.txt" ваш скрипт умирал.

1 голос
/ 01 октября 2011

Спросите у вашего хостинг-провайдера о SSH-доступе и сделайте это в Unix.Тем не менее, вы можете эмулировать доступ к оболочке с помощью функции system и друзей:

exec("ps --no-header -eo pid,user,comm", $output);
foreach ($output as $line) {
    $line = preg_split('#\s+#', trim($line));
    echo "PID: $line[0] USER: $line[1] PRG: $line[2]\n";
}

Отказ от ответственности: вы, вероятно, не сможете убить процессы Apache, даже если у вас будет доступ к оболочке.

0 голосов
/ 01 октября 2011

Вы можете изменить настройки set_time_limt до возникновения риска зацикливания, заставляя скрипт останавливаться через 10 секунд, если хотите.

http://php.net/manual/en/function.set-time-limit.php

...