Я создаю сайт, который использует посланника 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
,
У меня была мысль, что, возможно, разные работники очереди используют разных системных пользователей и, следовательно, разные открытые ключи, чтобы попытаться подключиться, но я не могу найти какую-либо информацию, подтверждающую это, но это объяснило бы ее нерегулярность.
Любое понимание или помощь будет высоко ценится!
Задача ещё не решена.
Других решений пока нет …