Как в MD запустить PHP и остановить его
Добавлено: Ср дек 20, 2017 8:39 pm
Есть программа на пхп зацикленная, надо чтобы она запускалась при включении переключателя на сцене, а при выключении из нее выходила. Система линукс. Есть идеи?
Сделать бесконечный цикл в этой программе управляемым. Например, как в циклах МДМ:Smirnoff1976 писал(а):Есть программа на пхп зацикленная, надо чтобы она запускалась при включении переключателя на сцене, а при выключении из нее выходила. Система линукс. Есть идеи?
Код: Выделить всё
while (1) {
if (file_exists('./reboot') || IsSet($_GET['onetime'])) {
exit;
}
}
А поподробнее?warik писал(а):Ну или можно закостылить на основе exec. Вызывать shell команду для запуска Вашего скрипта, и так же само вызывать команду на "убийство"(kill) скрипта.
И при включении создавать фаил в папке? А при выключении прибивать его?skysilver писал(а):Сделать бесконечный цикл в этой программе управляемым. Например, как в циклах МДМ:Smirnoff1976 писал(а):Есть программа на пхп зацикленная, надо чтобы она запускалась при включении переключателя на сцене, а при выключении из нее выходила. Система линукс. Есть идеи?Код: Выделить всё
while (1) { if (file_exists('./reboot') || IsSet($_GET['onetime'])) { exit; } }
Имеем свой скрипт по пути: /var/www/script.phpSmirnoff1976 писал(а):А поподробнее?warik писал(а):Ну или можно закостылить на основе exec. Вызывать shell команду для запуска Вашего скрипта, и так же само вызывать команду на "убийство"(kill) скрипта.
Код: Выделить всё
exec("/usr/bin/php /var/www/script.php");
Код: Выделить всё
exec("pgrep -f '/usr/bin/php /var/www/script.php'");
О спасибо! На благодарить сейчас нажму!warik писал(а):Имеем свой скрипт по пути: /var/www/script.phpSmirnoff1976 писал(а):А поподробнее?warik писал(а):Ну или можно закостылить на основе exec. Вызывать shell команду для запуска Вашего скрипта, и так же само вызывать команду на "убийство"(kill) скрипта.
Добавляем элемент "switch" на сцену:Добавляем класс, объект, свойства и методы объекта. Я для примера взял готовый класс "Relays" который был в системе по дефолту. В него я добавил новый объект "Relay1":СпойлерПоказатьЭтот объект привязал к переключателю что был добавлен выше. Это видно на первом скрине.СпойлерПоказать
Далее у этого объекта есть методы, которые изменяются при нажатии на переключатель на сцене. Методы, так же как и весь класс, уже были добавлены в систему по дефолту. В этих методах добавляем код:
Для запуска скрипта:СпойлерПоказатьИ для остановки:Код: Выделить всё
exec("/usr/bin/php /var/www/script.php");
СпойлерПоказатьВ pgrep возможно понадобится использовать sudo.Код: Выделить всё
exec("pgrep -f '/usr/bin/php /var/www/script.php'");
Это примерное описание реализации которое будет работать. Я написал этот пример для того чтобы просто показать Вам вариант решения Вашего вопроса. Понятное дело что под такое нужно будет создавать свой класс, свойства и методы, потому что класс который я использовал для примера, может использоваться в будущем или уже используется Вами в системе.
Да. С pgrep-ом перепутал.Smirnoff1976 писал(а): О спасибо! На благодарить сейчас нажму!
только pgrep -f выдает номер процесса, а чтобы прибить надо pkill -f. В терминале пашет, сейчас попробую в МД реализовать.