Laravel 5 排队的命令
Laravel 5 Queued Command
我正在使用 Laravel 5 制作一个应用程序,目前我遇到了一个小问题(我希望如此)。
所以我编写了一个实现 ShouldBeQueued 的命令,如下所示:
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()
时它不会发送它。有什么建议吗?
您在构造函数中分配 $this->filePath
,然后在 handle()
方法中覆盖它。
终于我找到了兔子:我完全忘记了每次尝试都刷新所有作业,所以我不明白为什么但它弄乱了命令(我已经重新启动了 Vagrant 机器,但我认为没有影响任何事情)。
我正在使用 Laravel 5 制作一个应用程序,目前我遇到了一个小问题(我希望如此)。 所以我编写了一个实现 ShouldBeQueued 的命令,如下所示:
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()
时它不会发送它。有什么建议吗?
您在构造函数中分配 $this->filePath
,然后在 handle()
方法中覆盖它。
终于我找到了兔子:我完全忘记了每次尝试都刷新所有作业,所以我不明白为什么但它弄乱了命令(我已经重新启动了 Vagrant 机器,但我认为没有影响任何事情)。