我正在製作一個使用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()
時隊列方面它沒有發送。有什麼建議麼 ?
抱歉它是一個錯字,現在固定 – danielgek
如果我正好運行它,因爲它是現在,我得到[Symfony的\分量\調試\異常\ FatalErrorException] 無法訪問空屬性 – danielgek
你從哪裏得到這個錯誤? –