설정 시간에 하루에 한 번 실행되는 Cron 작업을 설정하는 데 어려움을 겪고 있습니다. 여기 내 모듈의 설정에있는 내용은 다음과 같습니다 나는 cron 작업에 대해 알고있는, 즉 내 로컬 시간대에 따라 오후 5 실행해야Magento의 Cron은 근본적으로 결함이 있습니까?
<crontab>
<jobs>
<sorting_flushcache>
<schedule><cron_expr>0 16 * * *</cron_expr></schedule>
<run><model>sorting/observer::flushProductCacheCron</model></run>
</sorting_flushcache>
</jobs>
</crontab>
에서. 그러나 결코 작동하지 않습니다. cron_expr을 * 16 * * *
으로 설정하면 전체 시간 동안 매분마다 작업을 예약합니다 (예상대로).
Mage_Cron_Model_Schedule은 짐승의 두뇌입니다. cron.php 스크립트가 서버의 crontab 일정에 의해 호출되면이 클래스가 캐치하고 해당 작업을 처리하는 이벤트를 전달합니다. 무엇보다도 config에서 pull하고 다가오는 cron 작업을 계획하려고 시도합니다. 내부 public function trySchedule($time)
안에는 matchCronExpression
이 호출되어 해당 cron 표현식 조각과 일치하는 현재 시간 값과 함께 해당 cron 표현식 조각이 전달됩니다. 예를 들어, cron_expr (분 부분)의 첫 번째 부분과 현재 시간 소인의 분을 비교합니다. cron_expr는 0 16 * * *
내입니다, 내 경우
return ($num>=$from) && ($num<=$to) && ($num%$mod===0);
다음 matchCronExpression
함수의 끝에서 그것은 부울 값과 같이 반환합니다. 내 분 부분에 어떤 범위 나 */5
유형의 내용이 없기 때문에 내가 설정 한 정확한 값을 현재 타임 스탬프의 정확한 값과 비교합니다. 즉,이 작업을 예약해야하는 정확한 순간에 cron 스크립트를 실행 한 경우에만 true를 반환합니다.
다시 말하지만, 나는 cron 전문가는 아니지만 이것은 나에게 맞는 것 같지 않습니다. cron 스케줄러가 스크립트를 실행할 정확한 시간을 예측할 수 없다면 하루에 한 번씩 작업을 실행하도록 스케줄하는 방법은 무엇입니까? 나는 정말로 내가 뭔가를 놓치기를 바란다. .. 누군가 도울 수 있냐?
- CRON CONFIG 정보 -이 문제에 대한 "솔루션"을 발견 할 수 있습니다하지만이 가능한 영향이있을 수 있습니다 확실하지 않다
generate schedules every: 5
schedule ahead for: 10
missed if not run within: 20
success history lifetime: 60
failure history lifetime: 600
현지 시간대가 아닌 서버 시간대입니다. – hakre
무엇이든지, 그것은 요점이 아닙니다. 내 게시물에서 언급했듯이, 만약 그것을 * 16 * * *으로 변경하면 그것은 작동합니다 .... 그래서 나는 그것이 내가 말한 시간대의 의미론이 아닙니다. 나는 단순히 작동하지 않습니다. – BrianVPS
그래 보이지 않아. 그러나 내가 읽은 것은 자성의 코드 품질이 좋지 않다는 것입니다. 아마도 그냥 뭔가를 함께 밀어 shitbacked 출시를 밀어하고 빨리 섹시하게 보이게합니다. – hakre