2011-04-28 2 views
0

나는이 응용 프로그램을 웹 응용 프로그램 사용자가 매주 또는 이틀에 걸쳐 전자 메일을 보내도록 허용해야하는 CakePHP으로 구축하고 있습니다. 각 사용자가 자신의 cron 작업을 수행 할 수있는 방법이 있습니까? 그리고 가능하다면 어떻게 이것이 달성 될 수 있습니까? 나는 완전히 잃어 버렸다.각 사용자가 Cpanel 웹 사이트를 사용하지 않고 cron 작업을 수행 할 수 있습니까?

답변

4

나는 그 시간에 또는 그 전에 스케줄 된 모든 사용자 전자 메일에 대해 데이터베이스를 검사하여 보내주는, 자주 실행되는 단일 공유 cron 작업 (15 분마다)을 제안합니다.

한 번에 수십 개의 사용자 전자 메일을 보내려면이 문제도 고려해야합니다.

+0

이것은 몇 천 명이 넘는 사용자를위한 방법입니다. –

+0

알겠습니다. 하지만 사용자가 cron tab에 추가하는 방법은 무엇입니까 ?? http://example.com/emails/testusers/autosend가 테스트 사용자를 위해 cron 탭에 추가되는 방법을 이메일로 보냈다고 가정합니다. – Noob

+0

그들은 cron 작업을 직접 추가/예약하지 않습니다. 그들은 응용 프로그램에서 무언가를 추가/예약합니다. 응용 프로그램이 cron 작업을 실행하고 검사합니다. –

0

가능한 가장 낮은 간격으로 실행되는 cron을 만드는 것이 좋습니다. 이 cron은 모든 사람을 관통하고 실행할 시간인지 확인합니다.

0

면책 조항 : 다음 코드는 절대적으로 보안되지 않음은 실행되지 않습니다. 실제와 달리 복사하거나 붙여 넣지 않는 예를 들어주세요. 당신이 경고했습니다 :

예 CakePHP의 코드 :

<?php 

    // ... blah blah boiler plate, action follows: 
    public function runscheduler(){ 
     // you can also have: $jobs = $this->Jobs->all(); 
     $jobs = $this->Jobs->find(array('conditions' => array('can_run_now' => true))); 
     foreach ($jobs as $job) { 
      // you pick the conditions yourself here, my imagination is drained 
      if ($job->scheduled == time()) { 
       exec($job->command); // huge security threat right here 
      } 
     } 
     // we are done, that's it, whenever crontab calls us 
     // next, we will take care of business 
    } 
?> 

이제 모든 것을 남은

가 TFM에서 읽을 수 있습니다 : CakePHP Console TasksRunning Console Tasks from Cron (죄송합니다 너무 피곤 붙여 넣기를 복사 참조).

관련 문제