[laravel] index-now 만들기
Index-Now 개발예제(Job를 이용한 비동기식)
이장에서는 IndexNow에 데이타를 전달하는 간단한 프로그램을 설명드릴 예정입니다.
기존 검색엔진들이 직접 검색로봇이 웹에 접근하던것과 달리 Index-now 검색엔진에 웹페이지의 생성/변경등을 강제적으로 알려주는 프로그램입니다. 일부 검색엔진(bing, yahoo..) 등등이 이 방법을 사용합니다.
- 이장에 들어가기전에 아래 링크를 잠시 읽어봐 주시기 바랍니다.
- Job에 대한 기본 정보 이해하기
Index-Now 프로그램
1. Job 제작
php artisan make:job IndexNow
명령을 실행하면 app/Jobs 폴더안에 IndexNow.php파일이 생성된다.
이곳에서 우리는 필요한 프로그램을 하여야 하는데 먼저 기본적인 모양만 보여드리기 위해 생성된 파일 그대로를 나열하였습니다.
<?php
namespace App\Jobs;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldBeUnique;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Queue\SerializesModels;
class IndexNow implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
/**
* Create a new job instance.
*
* @return void
*/
public function __construct()
{
//
}
/**
* Execute the job.
*
* @return void
*/
public function handle()
{
//
}
}
이제 아래와 같이 변경하겠습니다.
..........
class IndexNow implements ShouldQueue
{
protected $somedata;
public function __construct($somedata)
{
$this->somedata = $somedata;
}
/**
* Execute the job.
*
* @return void
*/
public function handle()
{
$this->bingIndexNow($this->somedata);
}
private function bingIndexNow($path) {
$client = new \GuzzleHttp\Client();
$endpoint = 'api.indexnow.org';
$urlList = [env('APP_URL').'/'.$path];
$query = [
'host'=> env('APP_URL'),
'key'=> env('INDEXNOW_KEY'),
'keyLocation'=>env('APP_URL').'/'.env('INDEXNOW_KEY').'.txt',
'urlList'=> $urlList
];
$response = $client->request('POST', $endpoint, ['form_params' => $query]); // GET 을 사용할 경우 'query' 변수에 담아 보낸다.
Log::info('Bing IndexNow Status Code');
Log::info($response->getStatusCode());
}
}
2. Dispatch the Job
job을 실행하기위해서 controller에서 코드를 작성하면 됩니다. 저는 NowIndex라는 코드를 샘플로 작성해 보겠습니다.
<?php
..........
use App\Jobs\IndexNow;
..........
class NowIndexController extends Controller
{
..........
public function indexNow(Request $request) {
IndexNow::dispatch($request->somedata);
..........
}
}
3. Queue Worker 실행하기
이 부분은 위에서 언급한 링크 Job에 대한 기본 정보 이해하기 로 대처하겠습니다.