Skip to content
New issue

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

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

Already on GitHub? # 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. Джедай станет работать минимум в два раза медленнее, если мы каждый раз будем поднимать во втором потоке ядро Битрикса.

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

No branches or pull requests

2 participants