저는 Laravel 5.2를 사용하고 있습니다. 현재 데이터베이스에서 수천 개의 행을 가져 와서 각 행에 대해 계산을 수행하는 cron 작업이 있습니다. cron 작업은 현재 실행하는 데 약 1 시간이 걸리지 만 데이터베이스는 매일 계속 커집니다.큰 cron 작업을 여러 cron 작업으로 분할하십시오.
하나의 옵션은 crontab -e
을 사용하여 더 많은 cron 작업을 수동으로 추가하는 것입니다 (즉, 5 개의 작은 부분으로 작업을 분할하는 5 개의 cron 작업). 그러나 다음과 같은 작업을 수행 할 수도 있습니다.
crontab -e
을 사용하여 단일 cron 작업을 설정하십시오.- cron 작업 스크립트는 데이터베이스의 모든 행을 가져오고 반환되는 행 수에 따라 더 많은 cron 작업을 분할해야 하는지를 결정합니다. 예를 들어, 데이터베이스가 1000 개의 행을 반환하면 10 개의 cron 작업으로 분할해야하지만 데이터베이스가 10000 개의 행을 반환하면 100 개의 cron 작업으로 분할해야합니다.
그래서 제 질문은, 그것은 PHP 스크립트 다음은 (기본적으로 PHP에서 더 많은 cron 작업을 호출로 분할되어야하는 더 cron 작업을 결정하는 경우, 단 하나의 cron 작업이 crontab -e
에 나열된 가질 수 있습니다 스크립트)?
안전한가요? 이것에 접근하는 더 좋은 방법이 있습니까? 내가 대기열을 사용하는 것이 좋습니다 것입니다
class PostCron extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'post_cron';
/**
* The console command description.
*
* @var string
*/
protected $description = '';
/**
* Execute the console command.
*
* @return mixed
*/
public function handle()
{
$posts = Post::all(); // currently returns ~1000 rows, but grows in size daily
foreach ($posts as $post) {
// computations on each separate post
}
}
}
이 같은 여기에 참조 laravel queue
그래서 코드가 될 것입니다 뭔가 새로운 cron 작업을 생성하지 않습니다; 하지만 간단히 X 스크립트를 실행하는 것입니다. –
@Dagon 그게 제가 의미하는 바입니다. –