Я создаю сайт, который использует посланника laravel для запуска команд на удаленном сервере.При нажатии кнопки для запуска задачи она добавляется в очередь (я использую redis и horizon), чтобы она обрабатывалась в фоновом режиме и вообще не замедляла работу сайта.Изначально у меня были проблемы с доступом по ssh и открытыми ключами, но теперь они отсортированы, но осталась одна проблема - несоответствие, с которым выполняются задания.
Позвольте мне начать с того, что проблема не вмой MacBook Pro и работает надежно каждый раз.Иногда на моем Debian VPS, как правило, примерно 1 к 5 раз, он работает нормально, но в других случаях сценарий вообще не запускается.Я проверяю в горизонте, и задание определенно отправляется правильно каждый раз, но задание, которое должно занять около 40 секунд, завершается менее чем за секунду, и я ничего не вижу в своем выводе (у меня естьсистема слежения за заданиями, чтобы пользователь мог видеть их состояние и журнал после его запуска).
Код, который я использую для запуска задачи посланника:
exec('cd ' . base_path() . ' && /home/admin/.composer/vendor/bin/envoy run ' . $this->task . $this->query, $this->result);
$this->result
используется для хранения результатов задания посланника и возвращается полностью пустым, когда задание выполняется неправильно.
Еще одно, это то, что я пробовал просто запустить exec('whoami')
и ничего не получил обратно.На тех, где он работал правильно, я получил root
.
У меня была мысль, что, возможно, разные работники очереди используют разных системных пользователей и, следовательно, разные публичные ключи, чтобы попытаться подключиться, но я не могунайти любую информацию, чтобы поддержать это, но это объяснило бы неправильность этого.
Любое понимание или помощь будет принята с благодарностью!