Узнайте, выполняется ли команда и параметры команды в Symfony

#symfony

#symfony

Вопрос:

У нас есть служба, которая может быть вызвана из команды Symfony и из обычного веб-запроса. Есть ли способ узнать, была ли служба вызвана из команды или из веб-запроса? Если да, то если она была вызвана из команды, есть ли способ узнать параметры, которые использовались при выполнении команды?

Комментарии:

1. Как насчет добавления переменной, например $isCalledFromCommand , в службу, значение которой вы установили true , если она вызывается из команды? То же самое для параметров. Я думаю, что это самый простой способ

2. Это кажется плохим дизайном. Если вы вызываете из command, используйте какой-то независимый ввод или, если выполняемые действия отличаются, используйте какой-то декоратор для базовых функций и фактических действий для веб-запроса и команды.

3. Нам просто нужно сделать это для отладки проблемы, это будет временная вещь, поэтому я действительно не хочу изменять всю архитектуру платформы

Ответ №1:

Привет, вы можете использовать это, чтобы узнать, используется ли служба из командной строки, если она работает с apache, вы получите это apache2handler

 if(php_sapi_name() === 'cli') {
  //some code
}
  

https://www.php.net/manual/en/function.php-sapi-name.php

Ответ №2:

В консоли symfony,

контекст командной строки не знает о вашем виртуальном хостинге или доменном имени

Это означает, что вы можете проверить схему запроса, host, base_url и базовый путь, поскольку эти свойства запроса не имеют значений в контексте консоли, если вы их не настроите (https://symfony.com/doc/current/console/request_context.html#configuring-the-request-context-globally)