2015-04-22 87 views
1

我正在製作一個使用Laravel 5的應用程序,此刻我遇到了一個小問題(我希望)。 所以我編碼實現ShouldBeQueued像這樣的命令:Laravel 5排隊命令

class ImportDataCommand extends Command implements SelfHandling,ShouldBeQueued { 


    use InteractsWithQueue, SerializesModels; 

    public $filePath; 

    /** 
    * Create a new command instance. 
    * 
    * @return void 
    */ 
    public function __construct($filePath) 
    { 
     $this->filePath = $filePath; 
     Log::info('queued shit from command contructor and i have this destinationPath => '.$filePath);//working 
     echo "contructor ".$this->filePath; 

    } 

    /** 
    * Execute the command. 
    * 
    * @return void 
    */ 
    public function handle() 
    { 


     $destinationPath = storage_path().'/app/gtfs/'; 


     $zip = new ZipArchive; 
     echo "handle ".$this->filePath; 
     /*$res = $zip->open($destinationPath.$this->filePath); 
     if ($res === TRUE) { 
      $zip->extractTo($destinationPath.'extracted/'); 
      $zip->close(); 
      echo 'done'; 

     } else { 

      echo 'fail'; 

     }*/ 
    } 

} 

我打電話這樣說:

$bus->dispatch(new ImportDataCommand($fileName)); 

時,在隊列中(順便說一句後執行命令我的問題是我使用beanstalkd)它引發異常,因爲filePath沒有設置,我想我已經明白了爲什麼會發生這種情況,當我用變量將它發送到busDispatcher上的隊列時,該命令被實例化,但是當調用handle()時隊列方面它沒有發送。有什麼建議麼 ?

回答

1

最後我發現了兔子:我完全忘記了每次嘗試沖洗所有作業,所以我不明白爲什麼,但它與命令混淆(iIhave重新啓動了Vagrant機器,但我認爲不會影響任何東西)。

1

您在構造函數中指定$this->filePath,然後在handle()方法中覆蓋它。

+0

抱歉它是一個錯字,現在固定 – danielgek

+0

如果我正好運行它,因爲它是現在,我得到[Symfony的\分量\調試\異常\ FatalErrorException] 無法訪問空屬性 – danielgek

+0

你從哪裏得到這個錯誤? –