コード例 #1
0
ファイル: WorkerJobSet.php プロジェクト: lidijakralj/bober
 public function __construct($background = false, $auto_destroy_results = true)
 {
     $this->background = $background;
     $this->auto_destroy_results = $auto_destroy_results;
     $hash_ok = false;
     do {
         $this->randomHash = self::generateRandomString(25);
         $job_set = JobSet::model()->find('hash=:hash', array(':hash' => $this->randomHash));
         if ($job_set == null) {
             $hash_ok = true;
         }
     } while (!$hash_ok);
     $this->JobSet = new JobSet();
     $this->JobSet->hash = $this->randomHash;
     $this->JobSet->needed = 1;
     $this->JobSet->save();
     $this->taskList = new Net_Gearman_Set();
     $this->jobCounter = 0;
     global $WorkerJobSetResults;
     if (!isset($WorkerJobSetResults)) {
         $WorkerJobSetResults = array();
     }
     $WorkerJobSetResults[$this->randomHash] = array();
     $this->results = array();
 }
コード例 #2
0
ファイル: Svg2Pdf.php プロジェクト: lidijakralj/bober
 public static function BatchConvert($svg, $data = array(), $background = false)
 {
     $count = count($data);
     if ($count == 0) {
         return null;
     }
     $workerJobSet = new WorkerJobSet($background, false);
     for ($i = 0; $i < $count; ++$i) {
         $workerJobSet->addTask('Svg2Pdf', "Convert", array($svg, $data[$i]));
     }
     // svg 2 pdf jobs
     $svg_to_pdf_jobs = array();
     // optimize fetch from database, not to load everying if we need only id
     $criteria = new CDbCriteria();
     $criteria->select = 't.id';
     $criteria->condition = 't.job_set_id = ' . $workerJobSet->getJobSetId();
     $JobList = Job::model()->findAll($criteria);
     // $JobList = Job::model()->findAll('job_set_id=:job_set_id', array(':job_set_id' => $workerJobSet->getJobSetId()));
     foreach ($JobList as $Job) {
         $svg_to_pdf_jobs[] = $Job->id;
     }
     if (!$background) {
         $result = $workerJobSet->run();
         if ($result != null) {
             $workerJobSetMerge = new WorkerJobSet($background, false);
             $workerJobSetMerge->addTask('Svg2Pdf', 'MergePDF', array($svg_to_pdf_jobs));
             $resultPDF = $workerJobSetMerge->run();
             // clean up database
             $jobSet = JobSet::model()->find('id=:id', array(':id' => $workerJobSet->getJobSetId()));
             if ($jobSet != null) {
                 $jobSet->delete();
             }
             $jobSetMerge = JobSet::model()->find('id=:id', array(':id' => $workerJobSetMerge->getJobSetId()));
             if ($jobSetMerge != null) {
                 $jobSetMerge->delete();
             }
             if (isset($resultPDF[0])) {
                 return $resultPDF[0];
             } else {
                 return null;
             }
         } else {
             return null;
         }
     } else {
         $job_id = $workerJobSet->addTask('Svg2Pdf', 'MergePDF', array($svg_to_pdf_jobs));
         $result = $workerJobSet->run();
         $workerJobSet->setFinalJobResultId($job_id);
         return $workerJobSet->getJobSetId();
     }
 }