Есть ли способ запустить запланированное задание при запуске apache2 с помощью symfony? - PullRequest
0 голосов
/ 22 мая 2019

У меня есть бэк-офис, где я могу добавлять новые устройства. Когда устройство создано, мне нужно открыть прослушивающий сокет TCP для получения данных.

Я использую Symfony 4 в Debian 9, хотя мое приложение должно работать на нескольких ОС, таких как Windows или MacOS. Первым шагом является открытие сокета при создании устройства (на контроллере), но если мой сервер перезагружается,

знаете ли вы, можно ли открыть сокет TCP для каждого устройства, настроенного при запуске приложения (например, при запуске apache2)?

Мне удалось создать команду Symfony для открытия сокета TCP, но я не знаю, как планировать такты при запуске системы.

Заранее спасибо.

1 Ответ

1 голос
/ 22 мая 2019

Создать команду (bin/console make:command), которая выбирает все устройства

$deviceRepository->findAll()

и в цикле foreach на устройствах запускайте код, открывающий сокет TCP.

foreach ($devices as $device) {
    //you need to write this method in your entity or better in a service
    $device->openTCPSocket();
}

Для запуска команды при загрузке системы используйте параметр @reboot в crontab :

@reboot /home/myapp/bin/console app:mycommand 

Или вы можете написать службу systemd , которая запускает консольный сценарий

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...