Php 什么是将数据作为一百块传递到队列的最佳方式?

Php 什么是将数据作为一百块传递到队列的最佳方式?,php,laravel,Php,Laravel,如何使用laravel中的队列优化此。 我有一个控制器,当我调用route时,它开始使用队列在数据库中插入数据。 插入函数存在于队列中,我希望以30秒的延迟在块中插入数据 for($i=1; $i<=400;$i++) { $data = ['name'=> 'Walter Zada','email' => 'walterworld@gmail.com']; if($i<=100) InsertJOb::dispatch($data);//->delay(now()

如何使用laravel中的队列优化此。 我有一个控制器,当我调用route时,它开始使用队列在数据库中插入数据。 插入函数存在于队列中,我希望以30秒的延迟在块中插入数据

for($i=1; $i<=400;$i++)
{
$data = ['name'=> 'Walter Zada','email' => 'walterworld@gmail.com'];
if($i<=100)
InsertJOb::dispatch($data);//->delay(now()->addSeconds(15));
else if($i>100 && $i<=200)
{
InsertJOb::dispatch($data)->delay(now()->addSeconds(20));
}
else if($i>200 && $i<=300)
{
InsertJOb::dispatch($data)->delay(now()->addSeconds(20));
}
else if($i>300 && $i<=400)
{
InsertJOb::dispatch($data)->delay(now()->addSeconds(20));
}           
}
对于($i=1;$i'Walter Zada','email'=>'walterworld@gmail.com'];
如果($idelay(now()->addSeconds(15));
如果($i>100&&$idelay(now()->addSeconds(20));
}
如果($i>200&&$idelay(now()->addSeconds(20));
}
如果($i>300&&$idelay(now()->addSeconds(20));
}           
}

想象一下,将数据放在一个大数组中,而不是像您那样生成数据。如果需要,您可以将其生成一个数组

所以数据看起来是这样的

[['name'=> 'Walter Zada','email' => 'walterworld@gmail.com'], ...];
现在,您可以清理代码并使用
Laravels
chunk()
方法进行此数据方法

$data = collect($yourDate);
$now = now();

$data->chunk(100)->each(function (array $chunkedData) use ($now) {
    InsertJob::dispatch($chunkedData)->delay($now->addSeconds(20));
});

想象一下,将数据放在一个大数组中,而不是像您那样生成数据。如果您愿意,可以将其生成一个数组

所以数据看起来是这样的

[['name'=> 'Walter Zada','email' => 'walterworld@gmail.com'], ...];
现在,您可以清理代码并使用
Laravels
chunk()
方法进行此数据方法

$data = collect($yourDate);
$now = now();

$data->chunk(100)->each(function (array $chunkedData) use ($now) {
    InsertJob::dispatch($chunkedData)->delay($now->addSeconds(20));
});

当我将数据分配给$data时,它在调度中显示未定义的$data。很抱歉,您应该传递chunkedData:)这对您的问题有帮助吗?谢谢您的帮助,尽管我对stackoverflow不是很熟悉。当我将数据分配给$data时,它在调度中显示未定义的$data。很抱歉,您应该传递chunkedData:)这对你的问题有帮助吗?谢谢你的帮助虽然我对stackoverflow不是很熟悉。