Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Научить джедая отличать "битриксовые" команды от "небитриксовых" #23

Open
mmjurov opened this issue Jan 17, 2017 · 1 comment

Comments

@mmjurov
Copy link

mmjurov commented Jan 17, 2017

В процессе обсуждения #22 пришла идея.

Может быть научить джедая отличать "битриксовые" команды от "не битриксовых"? Сейчас ядро битрикса не подключается только в случае вызова env:init. Отличать можно по инстансу команды (если потомок от BitrixCommand, то это битриксовая команда, в остальных случаях - нет).
В дополнение к этому добавить команду, которая позволила бы "проверить", можно ли запускать "битриксовые" команды в текущей среде, а на результат работы этой команды завязать работу других команд.

Итоговый список изменений, который предлагается сделать:

  1. Добавить команду test (или test:bitrixcore). Эта команда должна в отдельном процессе запустить какой-то php скрипт (пусть даже джедайский), который в случае удачного подключения к битриксу выведет какую-то строку, говорящую о корректности подключении ядра. Если вывод этого скрипта будет отличаться от заданного, считается что ядро не подключено.
    В отдельном процессе запускать нужно потому, что битрикс любит кидаться exit()ами и die()ми в случаях, когда ему что-то не нравится. Думается, что-то такое может помочь:
exec(PHP_BINARY . ' ' . $_SERVER['argv'][0] . ' test') 
  1. Подключение ядра битрикса производить только в том случае, если выполняется команда, являющаяся инстансом BitrixCommand. Можно также добавить сюда вызов test команды, чтобы уберечь от запуска скрипта, если ядро не подключено.
    В принципе можно вообще на каждое обращение к ./vendor/bin/jedi добавить вызов команды test (кроме того момента, когда идет обращение к команде test естественно), но наверно это слишком.
  2. В вывод команды help добавить дополнительную информацию о том, что команда является зависимой от ядра битрикс (если это возможно).
  3. Список команд, выводимых командой help сделать зависимой от результата работы команды test.

Как думаете, имеет смысл? В принципе обратной совместимости это не должно навредить.

@niksamokhvalov
Copy link
Member

Это хорошая идея, Джедай надо делать отказоустойчивым. Есть два нюанса в твоей концепции:

  1. Ф-ция exec будет доступна на всех хостингах? Нужно учесть это при написании команды.
  2. Джедай станет работать минимум в два раза медленнее, если мы каждый раз будем поднимать во втором потоке ядро Битрикса.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Development

No branches or pull requests

2 participants