0
如何獲取從PHP運行的cli命令?如何知道在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 -m upload_consumer.php 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 2014-11-25 11:43:14
是什麼$ ARGC返回?如果它的零,那麼沒有選項被傳遞給你的腳本。如果沒有使用getopt()手動解析出你所期望的。 argc和getopt()都應該在時尚之後給你以後的東西。我不確定的東西(如果它甚至是一個因素?)將是類中的argc的使用,您可能必須在構造中而不是在方法中將其生成爲變量,因爲它的系統範圍應該仍然在範圍內我相信在課堂上。創建一個測試頁面以檢查它在非分類時實際上是否正常工作。 – Dave 2014-11-25 11:46:40
找到了解決方案,在使用之前必須使用'global $ argv'。請將此提及添加到您的答案中,因爲它實際上是解決方案的50%。 – skafandri 2014-11-25 11:50:01