2013-08-19 5 views
1

PHP를 사용하여 향후 작업을 예약하는 데 사용되는 웹 응용 프로그램을 작성 중입니다. 백그라운드에서 나는 매 2 분마다 데이터베이스를 폴링하여 예정된 작업이 있는지 확인합니다. 폴링을 어떻게 구현합니까? Javascript 솔루션은 사용자가 webapp의 모든 페이지에있을 수 있기 때문에 도움이되지 않지만 시스템은 DB를 풀링해야합니다.데이터베이스 폴링 후 작업 예약 PHP

크론은 한 가지 방법이지만 여전히 데이터베이스를 폴링하여 크론 작업을 작성해야합니다. 그것을 구현하는 가장 좋은 방법은 무엇입니까?

감사

+0

크론 작업 만들기. –

답변

0

마다 한 번씩 X 분을 실행되는 cron 작업을 작성하고 그 작업이 DB를 확인합니다. 다가오는 새로운 작업이 있으면 작업을 시작하십시오.

0

작업을 실행해야 할 때마다 데이터베이스를 폴링 할 수 있도록 'execute : tasks'artisan 명령을 생성하십시오.

php artisan execute:tasks 

귀하의 명령이 데이터베이스를 폴링하기 위해 어떤 컨트롤러 액션 (또는 클래스 메소드)를 호출하고 실행하는 데 사용할 작업이있는 경우 발견 할 것이다 : 당신은이 방법을 실행할 수 있어야합니다.

<?php 

use Illuminate\Console\Command; 
use Symfony\Component\Console\Input\InputOption; 
use Symfony\Component\Console\Input\InputArgument; 

class ExecuteTasksCommand extends Command { 

    /** 
    * The console command name. 
    * 
    * @var string 
    */ 
    protected $name = 'execute:tasks'; 

    /** 
    * The console command description. 
    * 
    * @var string 
    */ 
    protected $description = 'Find and execute available tasks.'; 

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

    /** 
    * Execute the console command. 
    * 
    * @return void 
    */ 
    public function fire() 
    { 
     (new ExecuteTasksClass)->findAndExecute(); 
    } 

} 

당신은 단지 이름이 : 이것은 장인 명령의 예입니다

*/2 * * * * php artisan execute:tasks 

:

은 그럼 그냥 그 장인 명령을 2 분마다 실행됩니다 cron 작업을 작성해야 이 파일은 app/commands/ExecuteTasksCommand.php와 같습니다.

app\start\artisan.php :

Artisan::add(new ExecuteTasksCommand); 
+0

ExecuteTasksCommand를 컨트롤러로 사용할 수 있습니까? – Fox

+0

아니요,'extends Command'가 있어야합니다. 그래서 Command입니다. 컨트롤러가 될 수있는 것은'ExecuteTasksClass'이지만 이것이 정확하지는 않습니다. 이에 대한 자세한 정보는 http://laravel.com/docs/commands에서 확인할 수 있습니다. –