laravel로 간단한 일괄 처리를 시도합니다.

8557 단어 batch라라벨

개요



업무로 배치 처리가 제대로 실시되고 있는지 매일 정점 관측을 하고 있는데, 원래 배치 처리의 코드를 실제로 쓴 적이 없기 때문에 간단한 것으로 좋기 때문에 실제로 스스로 만들어 보려고 생각 만들어 보기로 했다.

artisan에서 command 클래스 만들기



artisan에서 다음 명령을 친다.
하나의 명령으로 쉽게 클래스를 만들 수 있습니다.
$ php artisan make:command Hogecommand

위 명령 실행 후 app/Console/Commands 아래에 아래의 클래스가 되어 있는 것을 확인할 수 있다고 생각합니다.

Hogecommand.php
<?php

namespace App\Console\Commands;

use Illuminate\Console\Command;

class Hogecommand extends Command
{
    /**
     * The name and signature of the console command.
     *
     * @var string
     */
    protected $signature = 'command:name';

    /**
     * The console command description.
     *
     * @var string
     */
    protected $description = 'Command description';

    /**
     * Create a new command instance.
     *
     * @return void
     */
    public function __construct()
    {
        parent::__construct();
    }

    /**
     * Execute the console command.
     *
     * @return mixed
     */
    public function handle()
    {
        //
    }
}

  • protected $signature = 이름
    artisan 명령으로 실제로 칠 때 명령 이름이됩니다
  • protected $description = 일괄 처리 설명
  • public function handle ()로 일괄 처리의 내용을 기술한다

  • 기존 DB에 야마다 타로 등록



    각각, $signature , $description , 에 아래와 같은 내용을 써, handle()내에서 처리를 써 보았습니다.

    Hogecommand.php
    <?php
    
    namespace App\Console\Commands;
    
    use Illuminate\Console\Command;
    use Illuminate\Support\Facades\DB;
    use App\Models\Test;
    
    
    
    class Hogecommand extends Command
    {
        /**
         * The name and signature of the console command.
         *
         * @var string
         */
        protected $signature = 'updateyamadataro';
    
        /**
         * The console command description.
         *
         * @var string
         */
        protected $description = 'テーブルに山田太郎を登録させる';
    
        /**
         * Create a new command instance.
         *
         * @return void
         */
        public function __construct()
        {
            parent::__construct();
        }
    
        /**
         * Execute the console command.
         *
         * @return mixed
         */
        public function handle()
        {
            $item = new \App\Models\Test;
            $item->text = '山田太郎';
            $item->save();
        }
    }
    
    

    kernel.php로 명령 등록



    $commands 배열에 Hogecommand 클래스를 나열합니다.

    Kernel.php
    <?php
    
    namespace App\Console;
    
    use Illuminate\Console\Scheduling\Schedule;
    use Illuminate\Foundation\Console\Kernel as ConsoleKernel;
    
    class Kernel extends ConsoleKernel
    {
        /**
         * The Artisan commands provided by your application.
         *
         * @var array
         */
        protected $commands = [
            Commands\Hogecommand::class
        ];
    
        /**
         * Define the application's command schedule.
         *
         * @param  \Illuminate\Console\Scheduling\Schedule  $schedule
         * @return void
         */
        protected function schedule(Schedule $schedule)
        {
            // $schedule->command('inspire')
            //          ->hourly();
        }
    
        /**
         * Register the commands for the application.
         *
         * @return void
         */
        protected function commands()
        {
            $this->load(__DIR__.'/Commands');
    
            require base_path('routes/console.php');
        }
    }
    

    artisan 명령으로 updateyamadataro를 치십시오.


    php artisan updateyamadataro
    

    DB에 등록되어 있는지 확인





    artisan 커멘드로 배치를 두드려 등록시킨 것만의 간단한 처리이므로, 응용적인 일도 할 수 있도록 다음에 더 궁리한 것을 만들 수 있도록 합니다

    참고 사이트


  • Laravel 배치 처리 만들기
  • 좋은 웹페이지 즐겨찾기