Как в MD запустить PHP и остановить его
Модератор: immortal
-
- Сообщения: 130
- Зарегистрирован: Пт май 26, 2017 11:51 am
- Благодарил (а): 7 раз
- Поблагодарили: 4 раза
Как в MD запустить PHP и остановить его
Есть программа на пхп зацикленная, надо чтобы она запускалась при включении переключателя на сцене, а при выключении из нее выходила. Система линукс. Есть идеи?
-
- Сообщения: 74
- Зарегистрирован: Чт авг 11, 2016 1:19 am
- Откуда: Киев
- Благодарил (а): 6 раз
- Поблагодарили: 41 раз
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)
-
- Сообщения: 3006
- Зарегистрирован: Чт авг 21, 2014 8:28 am
- Откуда: Киров, Россия
- Благодарил (а): 400 раз
- Поблагодарили: 1754 раза
- Контактная информация:
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
- Откуда: Украина, Запорожье
- Благодарил (а): 108 раз
- Поблагодарили: 147 раз
- Контактная информация:
Re: Как в MD запустить PHP и остановить его
Ну или можно закостылить на основе exec. Вызывать shell команду для запуска Вашего скрипта, и так же само вызывать команду на "убийство"(kill) скрипта.
-
- Сообщения: 130
- Зарегистрирован: Пт май 26, 2017 11:51 am
- Благодарил (а): 7 раз
- Поблагодарили: 4 раза
Re: Как в MD запустить PHP и остановить его
А поподробнее?warik писал(а):Ну или можно закостылить на основе exec. Вызывать shell команду для запуска Вашего скрипта, и так же само вызывать команду на "убийство"(kill) скрипта.
-
- Сообщения: 130
- Зарегистрирован: Пт май 26, 2017 11:51 am
- Благодарил (а): 7 раз
- Поблагодарили: 4 раза
Re: Как в MD запустить PHP и остановить его
И при включении создавать фаил в папке? А при выключении прибивать его?skysilver писал(а):Сделать бесконечный цикл в этой программе управляемым. Например, как в циклах МДМ:Smirnoff1976 писал(а):Есть программа на пхп зацикленная, надо чтобы она запускалась при включении переключателя на сцене, а при выключении из нее выходила. Система линукс. Есть идеи?Код: Выделить всё
while (1) { if (file_exists('./reboot') || IsSet($_GET['onetime'])) { exit; } }
- savenko_egor
- Сообщения: 705
- Зарегистрирован: Вс авг 03, 2014 8:17 pm
- Откуда: Украина, Запорожье
- Благодарил (а): 108 раз
- Поблагодарили: 147 раз
- Контактная информация:
Re: Как в MD запустить PHP и остановить его
Имеем свой скрипт по пути: /var/www/script.phpSmirnoff1976 писал(а):А поподробнее?warik писал(а):Ну или можно закостылить на основе exec. Вызывать shell команду для запуска Вашего скрипта, и так же само вызывать команду на "убийство"(kill) скрипта.
Добавляем элемент "switch" на сцену:
СпойлерПоказать
СпойлерПоказать
Далее у этого объекта есть методы, которые изменяются при нажатии на переключатель на сцене. Методы, так же как и весь класс, уже были добавлены в систему по дефолту. В этих методах добавляем код:
Для запуска скрипта:
СпойлерПоказать
Код: Выделить всё
exec("/usr/bin/php /var/www/script.php");
СпойлерПоказать
Код: Выделить всё
exec("pgrep -f '/usr/bin/php /var/www/script.php'");
Это примерное описание реализации которое будет работать. Я написал этот пример для того чтобы просто показать Вам вариант решения Вашего вопроса. Понятное дело что под такое нужно будет создавать свой класс, свойства и методы, потому что класс который я использовал для примера, может использоваться в будущем или уже используется Вами в системе.
- За это сообщение автора savenko_egor поблагодарил:
- Smirnoff1976 (Чт дек 21, 2017 12:07 pm)
- Рейтинг: 1.16%
-
- Сообщения: 130
- Зарегистрирован: Пт май 26, 2017 11:51 am
- Благодарил (а): 7 раз
- Поблагодарили: 4 раза
Re: Как в MD запустить 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 -f выдает номер процесса, а чтобы прибить надо pkill -f. В терминале пашет, сейчас попробую в МД реализовать.
- savenko_egor
- Сообщения: 705
- Зарегистрирован: Вс авг 03, 2014 8:17 pm
- Откуда: Украина, Запорожье
- Благодарил (а): 108 раз
- Поблагодарили: 147 раз
- Контактная информация:
Re: Как в MD запустить PHP и остановить его
Да. С pgrep-ом перепутал.Smirnoff1976 писал(а): О спасибо! На благодарить сейчас нажму!
только pgrep -f выдает номер процесса, а чтобы прибить надо pkill -f. В терминале пашет, сейчас попробую в МД реализовать.
-
- Сообщения: 130
- Зарегистрирован: Пт май 26, 2017 11:51 am
- Благодарил (а): 7 раз
- Поблагодарили: 4 раза
Re: Как в MD запустить PHP и остановить его
Решено! Теперь гирлянда моргает, я готов к Новому Году! Всех с наступающем!