Как в MD запустить PHP и остановить его
Модератор: immortal
-
Smirnoff1976
- Сообщения: 130
- Зарегистрирован: Пт май 26, 2017 11:51 am
Как в MD запустить PHP и остановить его
Есть программа на пхп зацикленная, надо чтобы она запускалась при включении переключателя на сцене, а при выключении из нее выходила. Система линукс. Есть идеи?
Re: Как в MD запустить PHP и остановить его
Есть!
например, сделать "программу" незацыкленой в одну итерацию, в начало добавить проверку "включен или выключен". назвать сценарий "Prog"
в конец добавить запуск таймера который вызовет еще раз Prog
setTimeOut("Prog_timer", "runScript('Prog');", 10);
этот на 10 сек (то есть каждые 10 сек будет запускаться ваша прога если выключатель нажат)
например, сделать "программу" незацыкленой в одну итерацию, в начало добавить проверку "включен или выключен". назвать сценарий "Prog"
в конец добавить запуск таймера который вызовет еще раз Prog
setTimeOut("Prog_timer", "runScript('Prog');", 10);
этот на 10 сек (то есть каждые 10 сек будет запускаться ваша прога если выключатель нажат)
Домик Алисы - Orange Pi PC, DietPi | +BroadlinkRM+esp8266(espEasy)+zigbee(sonoff,Aqara)
-
skysilver
- Сообщения: 3006
- Зарегистрирован: Чт авг 21, 2014 8:28 am
- Откуда: Киров, Россия
- Контактная информация:
Re: Как в MD запустить PHP и остановить его
Сделать бесконечный цикл в этой программе управляемым. Например, как в циклах МДМ:Smirnoff1976 писал(а):Есть программа на пхп зацикленная, надо чтобы она запускалась при включении переключателя на сцене, а при выключении из нее выходила. Система линукс. Есть идеи?
Код: Выделить всё
while (1) {
if (file_exists('./reboot') || IsSet($_GET['onetime'])) {
exit;
}
}MajorDoMo (GitHub) на Cubietruck. ОС Debian 7 (wheezy) (kernel 3.4.105) с переносом на HDD.
Мой CONNECT | Блоги | Telegram
Мой CONNECT | Блоги | Telegram
- savenko_egor
- Сообщения: 705
- Зарегистрирован: Вс авг 03, 2014 8:17 pm
- Откуда: Украина, Запорожье
- Контактная информация:
Re: Как в MD запустить PHP и остановить его
Ну или можно закостылить на основе exec. Вызывать shell команду для запуска Вашего скрипта, и так же само вызывать команду на "убийство"(kill) скрипта.
-
Smirnoff1976
- Сообщения: 130
- Зарегистрирован: Пт май 26, 2017 11:51 am
Re: Как в MD запустить PHP и остановить его
А поподробнее?warik писал(а):Ну или можно закостылить на основе exec. Вызывать shell команду для запуска Вашего скрипта, и так же само вызывать команду на "убийство"(kill) скрипта.
-
Smirnoff1976
- Сообщения: 130
- Зарегистрирован: Пт май 26, 2017 11:51 am
Re: Как в MD запустить PHP и остановить его
И при включении создавать фаил в папке? А при выключении прибивать его?skysilver писал(а):Сделать бесконечный цикл в этой программе управляемым. Например, как в циклах МДМ:Smirnoff1976 писал(а):Есть программа на пхп зацикленная, надо чтобы она запускалась при включении переключателя на сцене, а при выключении из нее выходила. Система линукс. Есть идеи?Код: Выделить всё
while (1) { if (file_exists('./reboot') || IsSet($_GET['onetime'])) { exit; } }
- savenko_egor
- Сообщения: 705
- Зарегистрирован: Вс авг 03, 2014 8:17 pm
- Откуда: Украина, Запорожье
- Контактная информация:
Re: Как в MD запустить PHP и остановить его
Имеем свой скрипт по пути: /var/www/script.phpSmirnoff1976 писал(а):А поподробнее?warik писал(а):Ну или можно закостылить на основе exec. Вызывать shell команду для запуска Вашего скрипта, и так же само вызывать команду на "убийство"(kill) скрипта.
Добавляем элемент "switch" на сцену:
SPOILERSPOILER_SHOW
SPOILERSPOILER_SHOW
Далее у этого объекта есть методы, которые изменяются при нажатии на переключатель на сцене. Методы, так же как и весь класс, уже были добавлены в систему по дефолту. В этих методах добавляем код:
Для запуска скрипта:
SPOILERSPOILER_SHOW
Код: Выделить всё
exec("/usr/bin/php /var/www/script.php");SPOILERSPOILER_SHOW
Код: Выделить всё
exec("pgrep -f '/usr/bin/php /var/www/script.php'");Это примерное описание реализации которое будет работать. Я написал этот пример для того чтобы просто показать Вам вариант решения Вашего вопроса. Понятное дело что под такое нужно будет создавать свой класс, свойства и методы, потому что класс который я использовал для примера, может использоваться в будущем или уже используется Вами в системе.
-
Smirnoff1976
- Сообщения: 130
- Зарегистрирован: Пт май 26, 2017 11:51 am
Re: Как в MD запустить PHP и остановить его
О спасибо! На благодарить сейчас нажму!warik писал(а):Имеем свой скрипт по пути: /var/www/script.phpSmirnoff1976 писал(а):А поподробнее?warik писал(а):Ну или можно закостылить на основе exec. Вызывать shell команду для запуска Вашего скрипта, и так же само вызывать команду на "убийство"(kill) скрипта.
Добавляем элемент "switch" на сцену:Добавляем класс, объект, свойства и методы объекта. Я для примера взял готовый класс "Relays" который был в системе по дефолту. В него я добавил новый объект "Relay1":SPOILERSPOILER_SHOWЭтот объект привязал к переключателю что был добавлен выше. Это видно на первом скрине.SPOILERSPOILER_SHOW
Далее у этого объекта есть методы, которые изменяются при нажатии на переключатель на сцене. Методы, так же как и весь класс, уже были добавлены в систему по дефолту. В этих методах добавляем код:
Для запуска скрипта:SPOILERSPOILER_SHOWИ для остановки:Код: Выделить всё
exec("/usr/bin/php /var/www/script.php");SPOILERSPOILER_SHOWВ pgrep возможно понадобится использовать sudo.Код: Выделить всё
exec("pgrep -f '/usr/bin/php /var/www/script.php'");
Это примерное описание реализации которое будет работать. Я написал этот пример для того чтобы просто показать Вам вариант решения Вашего вопроса. Понятное дело что под такое нужно будет создавать свой класс, свойства и методы, потому что класс который я использовал для примера, может использоваться в будущем или уже используется Вами в системе.
только pgrep -f выдает номер процесса, а чтобы прибить надо pkill -f. В терминале пашет, сейчас попробую в МД реализовать.
- savenko_egor
- Сообщения: 705
- Зарегистрирован: Вс авг 03, 2014 8:17 pm
- Откуда: Украина, Запорожье
- Контактная информация:
Re: Как в MD запустить PHP и остановить его
Да. С pgrep-ом перепутал.Smirnoff1976 писал(а): О спасибо! На благодарить сейчас нажму!
только pgrep -f выдает номер процесса, а чтобы прибить надо pkill -f. В терминале пашет, сейчас попробую в МД реализовать.
-
Smirnoff1976
- Сообщения: 130
- Зарегистрирован: Пт май 26, 2017 11:51 am
Re: Как в MD запустить PHP и остановить его
Решено! Теперь гирлянда моргает, я готов к Новому Году! Всех с наступающем!