Страница 1 из 1

Как в MD запустить PHP и остановить его

Добавлено: Ср дек 20, 2017 8:39 pm
Smirnoff1976
Есть программа на пхп зацикленная, надо чтобы она запускалась при включении переключателя на сцене, а при выключении из нее выходила. Система линукс. Есть идеи?

Re: Как в MD запустить PHP и остановить его

Добавлено: Ср дек 20, 2017 10:51 pm
zoz
Есть!
например, сделать "программу" незацыкленой в одну итерацию, в начало добавить проверку "включен или выключен". назвать сценарий "Prog"
в конец добавить запуск таймера который вызовет еще раз Prog
setTimeOut("Prog_timer", "runScript('Prog');", 10);
этот на 10 сек (то есть каждые 10 сек будет запускаться ваша прога если выключатель нажат)

Re: Как в MD запустить PHP и остановить его

Добавлено: Ср дек 20, 2017 11:04 pm
skysilver
Smirnoff1976 писал(а):Есть программа на пхп зацикленная, надо чтобы она запускалась при включении переключателя на сцене, а при выключении из нее выходила. Система линукс. Есть идеи?
Сделать бесконечный цикл в этой программе управляемым. Например, как в циклах МДМ:

Код: Выделить всё

while (1) {
   
    if (file_exists('./reboot') || IsSet($_GET['onetime'])) {
        exit;
    }

}

Re: Как в MD запустить PHP и остановить его

Добавлено: Ср дек 20, 2017 11:05 pm
savenko_egor
Ну или можно закостылить на основе exec. Вызывать shell команду для запуска Вашего скрипта, и так же само вызывать команду на "убийство"(kill) скрипта.

Re: Как в MD запустить PHP и остановить его

Добавлено: Ср дек 20, 2017 11:30 pm
Smirnoff1976
warik писал(а):Ну или можно закостылить на основе exec. Вызывать shell команду для запуска Вашего скрипта, и так же само вызывать команду на "убийство"(kill) скрипта.
А поподробнее?

Re: Как в MD запустить PHP и остановить его

Добавлено: Ср дек 20, 2017 11:32 pm
Smirnoff1976
skysilver писал(а):
Smirnoff1976 писал(а):Есть программа на пхп зацикленная, надо чтобы она запускалась при включении переключателя на сцене, а при выключении из нее выходила. Система линукс. Есть идеи?
Сделать бесконечный цикл в этой программе управляемым. Например, как в циклах МДМ:

Код: Выделить всё

while (1) {
   
    if (file_exists('./reboot') || IsSet($_GET['onetime'])) {
        exit;
    }

} 
И при включении создавать фаил в папке? А при выключении прибивать его?

Re: Как в MD запустить PHP и остановить его

Добавлено: Чт дек 21, 2017 12:03 am
savenko_egor
Smirnoff1976 писал(а):
warik писал(а):Ну или можно закостылить на основе exec. Вызывать shell команду для запуска Вашего скрипта, и так же само вызывать команду на "убийство"(kill) скрипта.
А поподробнее?
Имеем свой скрипт по пути: /var/www/script.php
Добавляем элемент "switch" на сцену:
СпойлерПоказать
Screenshot_20171220_224331.png
Screenshot_20171220_224331.png (38.39 КБ) 4987 просмотров
Добавляем класс, объект, свойства и методы объекта. Я для примера взял готовый класс "Relays" который был в системе по дефолту. В него я добавил новый объект "Relay1":
СпойлерПоказать
Screenshot_20171220_224555.png
Screenshot_20171220_224555.png (56.88 КБ) 4987 просмотров
Этот объект привязал к переключателю что был добавлен выше. Это видно на первом скрине.
Далее у этого объекта есть методы, которые изменяются при нажатии на переключатель на сцене. Методы, так же как и весь класс, уже были добавлены в систему по дефолту. В этих методах добавляем код:
Для запуска скрипта:
СпойлерПоказать
Screenshot_20171220_225839.png
Screenshot_20171220_225839.png (48.37 КБ) 4987 просмотров

Код: Выделить всё

exec("/usr/bin/php /var/www/script.php");
И для остановки:
СпойлерПоказать
Screenshot_20171220_225947.png
Screenshot_20171220_225947.png (49.65 КБ) 4987 просмотров

Код: Выделить всё

exec("pgrep -f '/usr/bin/php /var/www/script.php'");
В pgrep возможно понадобится использовать sudo.

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

Re: Как в MD запустить PHP и остановить его

Добавлено: Чт дек 21, 2017 12:06 pm
Smirnoff1976
warik писал(а):
Smirnoff1976 писал(а):
warik писал(а):Ну или можно закостылить на основе exec. Вызывать shell команду для запуска Вашего скрипта, и так же само вызывать команду на "убийство"(kill) скрипта.
А поподробнее?
Имеем свой скрипт по пути: /var/www/script.php
Добавляем элемент "switch" на сцену:
СпойлерПоказать
Screenshot_20171220_224331.png
Добавляем класс, объект, свойства и методы объекта. Я для примера взял готовый класс "Relays" который был в системе по дефолту. В него я добавил новый объект "Relay1":
СпойлерПоказать
Screenshot_20171220_224555.png
Этот объект привязал к переключателю что был добавлен выше. Это видно на первом скрине.
Далее у этого объекта есть методы, которые изменяются при нажатии на переключатель на сцене. Методы, так же как и весь класс, уже были добавлены в систему по дефолту. В этих методах добавляем код:
Для запуска скрипта:
СпойлерПоказать
Screenshot_20171220_225839.png

Код: Выделить всё

exec("/usr/bin/php /var/www/script.php"); 
И для остановки:
СпойлерПоказать
Screenshot_20171220_225947.png

Код: Выделить всё

exec("pgrep -f '/usr/bin/php /var/www/script.php'"); 
В pgrep возможно понадобится использовать sudo.

Это примерное описание реализации которое будет работать. Я написал этот пример для того чтобы просто показать Вам вариант решения Вашего вопроса. Понятное дело что под такое нужно будет создавать свой класс, свойства и методы, потому что класс который я использовал для примера, может использоваться в будущем или уже используется Вами в системе.
О спасибо! На благодарить сейчас нажму!

только pgrep -f выдает номер процесса, а чтобы прибить надо pkill -f. В терминале пашет, сейчас попробую в МД реализовать.

Re: Как в MD запустить PHP и остановить его

Добавлено: Чт дек 21, 2017 12:28 pm
savenko_egor
Smirnoff1976 писал(а): О спасибо! На благодарить сейчас нажму!
только pgrep -f выдает номер процесса, а чтобы прибить надо pkill -f. В терминале пашет, сейчас попробую в МД реализовать.
Да. С pgrep-ом перепутал.

Re: Как в MD запустить PHP и остановить его

Добавлено: Пт дек 22, 2017 2:17 pm
Smirnoff1976
Решено! Теперь гирлянда моргает, я готов к Новому Году! Всех с наступающем!