123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129 |
- <?php
- class TripalDaemon extends DrushDaemon {
-
-
-
-
-
-
-
-
- protected $loop_interval = 20;
-
-
-
- protected $tripal_jobs = array();
-
- protected function executeTask($iteration_number) {
-
- $do_parallel = FALSE;
- $max_jobs = 1;
-
-
- if (!$do_parallel and tripal_is_job_running()) {
- $this->log("Jobs are still running. Use the --parallel=1 option with the Drush command to run jobs in parallel.\n");
- }
- elseif ($do_parallel && tripal_max_jobs_exceeded($max_jobs)) {
- $this->log("At least $max_jobs jobs are still running. At least one of these jobs much complete before a new job can start.\n");
- }
- else {
-
- $sql = "
- SELECT TJ.job_id
- FROM {tripal_jobs} TJ
- WHERE
- TJ.start_time IS NULL AND
- TJ.end_time IS NULL AND
- NOT TJ.status = 'Cancelled'
- ORDER BY priority ASC,job_id ASC";
- $job_ids = db_query($sql)->fetchCol();
- $num_waiting_jobs = sizeof($job_ids);
-
- if ($num_waiting_jobs > 0) {
- $this->log($num_waiting_jobs . ' Waiting Tripal Jobs... '
- . 'Running waiting job(s) now.');
-
- foreach ($job_ids as $id) {
- $this->log('Starting Job (ID=' . $id . ')', '', 1);
-
- $this->tripal_jobs[$id] = $id;
- $this->setStatus();
-
- $job = new TripalJob();
- $job->load($id);
- try {
- $job->run();
- }
- catch (Exception $e) {
- $job->logMessage($e->getMessage(), array(), TRIPAL_ERROR);
- }
-
- unset($this->tripal_jobs[$id]);
- $this->setStatus();
-
- $job = db_query(
- "SELECT j.*
- FROM {tripal_jobs} j
- WHERE j.job_id = :jid",
- array(':jid' => $id)
- )->fetchObject();
- $this->log("Job (ID=" . $id . ") completed at "
- . date('d M Y H:i:s', $job->end_time) . " with a status of '"
- . $job->status . "'", "", 1);
- }
- }
- }
- }
-
- protected function getStatusDetails() {
- $status_details = parent::getStatusDetails();
- $status_details['Running Job'] = (empty($this->tripal_jobs)) ? FALSE : TRUE;
- $status_details['Current Jobs'] = $this->tripal_jobs;
- return $status_details;
- }
- }
|