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'])."&region=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 错误:闭包序列化失败,即使是最基本的用法

laravel中job使用

奇怪的错误:- System.Web.HttpCompileException 未被用户代码处理

迭代数据时,Laravel 无法将 stdClass 类型的对象用作 Job 的数组 [重复]