Как получить команду cli, которая была запущена, с PHP?Как узнать команду, которая была запущена на PHP?
У меня есть журналирования класс
class Logger {
public function log($logMessage)
{
$this->writeLog($this->getCommand() . ' : ' . $logMessage);
}
private function getCommand()
{
//How to get the command?
//here var_dump($argv); returns NULL
}
}
Этот регистратор используется многими классами, которые выполняются из нескольких команд. примеры буксировочные: process_users.php
$logger = new Logger();
$users = new Users();
foreach ($users->getUnprocessed() as $user) {
$logger->log('processing '.$user->getId());
if ($user->process()){
$logger->log('processed ' . $user->getId());
} else {
$logger->log('failed ' . $user->getId());
}
}
upload_consumer.php
$logger = new Logger();
$consumer = new UploadConsumer();
while ($message = $consumer->getNextMessage()){
$logger->log('Uploading ' . $message['name']);
$this->upload($message);
$logger->log('Finished uploading '. $message['name']);
}
Так что, когда я бегу PHP process_users.php корпоративный --limit 10 Я хочу иметь журналы :
php process_users.php corporate --limit 10 : processing 2554
php process_users.php corporate --limit 10 : processed 2554
php process_users.php corporate --limit 10 : processing 2555
php process_users.php corporate --limit 10 : failed 2555
И когда я бегу PHP upload_consumer.php -m 100 -w Я хочу иметь журналы как:
php upload_consumer.php -m 100 -w : Uploading 564sdf564sdf56sd4f.png
php upload_consumer.php -m 100 -w : Finished uploading 564sdf564sdf56sd4f.png
php upload_consumer.php -m 100 -w : Uploading sd56f4sd54f6sd6f54.png
php upload_consumer.php -m 100 -w : Finished uploading sd56f4sd54f6sd6f54.png
Возможно ли это?
'var_dump ($ argv);' возвращает NULL, проверьте мое обновление вопроса – skafandri
, что возвращает $ argc? если его ноль, то в ваш скрипт не передается никаких параметров. В противном случае используйте getopt(), чтобы проанализировать их вручную из ожидаемого. И argc, и getopt() должны после моды дать вам то, что вам нужно. Что я не уверен (если это даже фактор?) Будет использование argc внутри класса, вам, возможно, придется генерировать его как переменную в конструкции, а не в методе, потому что ее системная система все равно должна быть в области в классе, который я считаю. Создайте тестовую страницу, чтобы проверить, действительно ли она работает, если она неклассифицирована. – Dave
Нашел решение, перед тем как использовать его для 'global $ argv'. Пожалуйста, добавьте это упоминание в свой ответ, потому что это фактически 50% решения. – skafandri