2013-06-15 4 views
5

나는 비슷한 질문을 한 것 같지만 아무도 나에게 대답하지 못했습니다. 나는 전에 CRON에 대해 들어 본 적이 없었으며 나는 Laravel을 처음 접했습니다. 내가 필요한 것은 일주일에 한 번 Task를 실행하여 데이터베이스 (MySql)에서 일부 작업을 수행하고 매주 일요일 오전 12시에 말합니다. 어떻게하면이 목표를 달성 할 수 있을까요? 당신이 크론를 사용할 수있는 경우 루트로 실행해야하는 경우특정 시간에 Laravel 작업 실행

+0

죄송합니다, 아직 anwser를 편집 중입니다. –

답변

10

, 당신은 단지,

crontab -e 

을 실행해야 또는 : 당신이 수정할 수 있도록

sudo crontab -e 

이 텍스트 편집기를 열 것이다 crontab을 실행하면 각 예약 된 명령에 대해 다음과 같이 한 줄씩 표시됩니다.

1 0 * * * php /var/www/myBlog/artisan task:run 

위와 같은 명령은 다음과 같습니다. 매일 1 분 (0h01 또는 12h01am)에 실행됩니다.

* * * * * <command to execute> 
┬ ┬ ┬ ┬ ┬ 
│ │ │ │ │ 
│ │ │ │ │ 
│ │ │ │ └───── day of week (0 - 6) (0 to 6 are Sunday to Saturday, or use names) 
│ │ │ └────────── month (1 - 12) 
│ │ └─────────────── day of month (1 - 31) 
│ └──────────────────── hour (0 - 23) 
└───────────────────────── min (0 - 59) 

따라서, 귀하의 경우,이 같은 라인을 만들 수 있습니다 :

0 12 * * 0 <command to execute> 

을하지만 어떻게 당신이 작업을 위해 그렇게 할 여기

그것의 설명이 전부입니다 Laravel에? 여러 가지 방법이 있습니다. 그 중 하나가 내 첫 번째 예입니다. 숙련 된 명령 (작업 : 실행)을 만든 다음 장인을 실행하거나, 적중 될 때마다 작업을 호출하는 앱 경로를 만들 수 있습니다 :

Route::get('/task/run',array('uses'=>'[email protected]')); 

그리고 당신은 그냥이 그것을 당신의 crontab을 추가 할 수 있습니다,하지만 당신은 wget이나 컬 같은 URL을 칠 뭔가가 필요합니다

0 12 * * 0 curl http://mysite.com/run/task 
+0

예, 위키 피 디아에서 보았습니다. 그렇지만 여전히 내 응용 프로그램에 해당 명령을 실행하는 방법을 알지 못합니다. Windows에서 작업하기 때문에'sudo '를 사용할 수 없습니다.내 앱이 개발 중이고, 프로덕션으로 넘어갈 때도 여전히 작동합니까? – ecampver

+0

cron은 기본적으로 작업 스케줄러이며, Windows 용 (http://puu.sh/3gDDl.png)도 있습니다. 또는 Windows 용 cron을 설치할 수도 있습니다. 그리고 내가 말했듯이 웹 사이트를 구축하고 있습니다. 내부적으로 작업을 실행하는 url을 만들 수 있습니다 : TaskController == 컨트롤러 lass, run = your method, 메서드가 실행되자 마자 원하는대로 수행 할 수 있습니다. , 당신은 그 URL을 치기 위해 뭔가가 필요하고 이것은 당신의 Task Scheduler입니다. –

+0

좋아, 지금은 테스트 할 수 없지만 당신을 믿을 것입니다. 감사 ;) – ecampver

2

당신이 작성하고 laravel 작업을 실행할 수 있습니다 다른 장인 명령처럼 명령 줄에서. 그래서 당신이 창문에 있다면 당신은 명령이 작동하는지 아닌지 수동으로 명령을 실행할 수 있습니다.

그런 다음 프로덕션 서버를 사용하고 있다면 (더 좋은 것은 유닉스 기반 인 경우), Antonio의 지시에 따라 cron 작업을 생성하고 cron 탭에 추가 할 수 있습니다. PHP 실행을위한 전체 경로를 알아야합니다.

내 튜토리얼은 모든 자세하게 설명 :

http://maxoffsky.com/code-blog/practical-laravel-using-cron-jobs-in-laravel/ 당신이 찾고있는 해답을 찾아 낸다.

3

는 Laravel 5 있기 때문에, 당신은 crontab -e을 실행 한 후 crontab을 투입 할 필요가있는 유일한 항목은

* * * * * php /path/to/artisan schedule:run >> /dev/null 2>&1 

프로젝트 특정 경로에 /path/to/artisan 부분을 변경하는 것을 잊지 마십시오입니다.

그리고 Laravel의 App\Console\Kernel 클래스에서 예약 된 작업과 실행 빈도를 정의 할 수 있습니다. 자세한 내용은 Laravel 문서를 참조하십시오. Task Schedule