laravel Job / Queue未被处理奇怪的无限循环
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了laravel Job / Queue未被处理奇怪的无限循环相关的知识,希望对你有一定的参考价值。
我正在尝试创建一个队列,但是当我运行php artisan queue:work
时它不起作用我在终端中获得的是
[2017-11-30 19:56:27] Processing: AppJobsProcessCSV
[2017-11-30 19:56:27] Processing: AppJobsProcessCSV
[2017-11-30 19:56:27] Processing: AppJobsProcessCSV
[2017-11-30 19:56:27] Processing: AppJobsProcessCSV
[2017-11-30 19:56:27] Processing: AppJobsProcessCSV
[2017-11-30 19:56:27] Processing: AppJobsProcessCSV
[2017-11-30 19:56:27] Processing: AppJobsProcessCSV
[2017-11-30 19:56:27] Processing: AppJobsProcessCSV
[2017-11-30 19:56:27] Processing: AppJobsProcessCSV
[2017-11-30 19:56:27] Processing: AppJobsProcessCSV
这就像一个无限循环。我的工作表中的ID也随之上升。它可以在我的笔记本电脑上工作,但不能在我的桌面上工作,这很奇怪。我把它放到了我的devleopment服务器上,它也没有在那里工作。
我的代码如下,任何帮助将不胜感激。
调节器
public function upload(Request $request) {
if($request->file('imported-file')) {
$user = "craig@boldy.co.uk";
$file = $request->file('imported-file')->store('uploads', 'public');
$this->dispatch(new ProcessCSV($file, $user));
Session::flash('success', 'Your file was uploaded successfully. We will email you once the locations have be imported.');
return back();
} else {
Session::flash('error', 'Please select a file to upload!!!!');
return back();
}
}
工作
public function handle()
{
$data = Excel::load($this->file, function($reader) {})->get();
$apiKey = '';
foreach($data as $row) {
if(!empty($row['postcode'])) {
$url = "https://maps.googleapis.com/maps/api/geocode/xml?address=".urlencode($row['postcode'])."®ion=uk&key=";
$tmp = file_get_contents($url);
$xml = simplexml_load_string($tmp);
// print_r($xml); exit;
if((string)$xml->status == 'OK' && isset($xml->result[0])) {
if(isset($xml->result[0]->geometry->location->lat)) {
$lat = (string)$xml->result[0]->geometry->location->lat;
}
if(isset($xml->result[0]->geometry->location->lng)) {
$lng = (string)$xml->result[0]->geometry->location->lng;
}
}
Import::updateOrCreate(
[
'sitecode' => $row['sitecode']
],
[
'sitecode' => $row['sitecode'],
'sitename' => $row['sitename'],
'address_1' => $row['address_1'],
'address_2' => $row['address_2'],
'address_town' => $row['address_town'],
'address_postcode' => $row['postcode'],
'charity' => $row['charity'],
'latitude' => $lat,
'longitude' => $lng,
'approved' => 1
]
);
}
}
}
答案
而不是php artisan queue:work
..你需要添加选项param --tries
以避免无限循环..它通常发生在作业中发生错误。如果使用驱动程序数据库,请参阅laravel.log或failed-job表。它会显示错误
php artisan queue:work --tries=3
以上是关于laravel Job / Queue未被处理奇怪的无限循环的主要内容,如果未能解决你的问题,请参考以下文章
Laravel 运行队列处理器 queue:work 与 queue:listen 区别及 Windows 终端命令问题
Laravel 运行队列处理器 queue:work 与 queue:listen 区别及 Windows 终端命令问题
Laravel Mail::queue 错误:闭包序列化失败,即使是最基本的用法