protected function processQuery(\GearmanJob $job, Query $query) { $start = microtime(true); $job->sendStatus(0, 100); $tempfile = tempnam(sys_get_temp_dir(), 'transmute_image'); $tempdest = tempnam(sys_get_temp_dir(), 'transmute_image'); if (false === ($filecontent = @file_get_contents($query->getFile()))) { $this->logger->addInfo(sprintf('Unable to download file `%s`', $query->getFile())); return new Result($job->handle(), $query->getUuid(), $job->workload(), null, $this->workerName, $start, microtime(true), array(), array(sprintf('Unable to download file `%s`', $query->getFile()))); } $this->logger->addInfo(sprintf('file %s retrieved', $query->getFile())); $job->sendStatus(30, 100); file_put_contents($tempfile, $filecontent); unset($filecontent); $job->sendStatus(50, 100); $specification = new Image(); $width = $height = null; foreach ($query->getParameters() as $name => $value) { switch ($name) { case 'width': $width = $value; break; case 'height': $height = $value; break; case 'quality': $specification->setQuality($value); break; } } if (null !== $width && null !== $height) { $specification->setDimensions($width, $height); } try { $this->alchemyst->open($tempfile)->turnInto($tempdest, $specification)->close(); } catch (Exception $e) { $this->logger->addInfo(sprintf('A media-alchemyst exception occured %s', $e->getMessage())); return new Result($job->handle(), $query->getUuid(), $job->workload(), null, $this->workerName, $start, microtime(true), array(), array(sprintf('A media-alchemyst exception occured %s', $e->getMessage()))); } catch (\Exception $e) { $this->logger->addInfo(sprintf('An unexpected exception occured %s', $e->getMessage())); return new Result($job->handle(), $query->getUuid(), $job->workload(), null, $this->workerName, $start, microtime(true), array(), array(sprintf('An unexpected exception occured %s', $e->getMessage()))); } $result = new Result($job->handle(), $query->getUuid(), $job->workload(), file_get_contents($tempdest), $this->workerName, $start, microtime(true)); unlink($tempfile); unlink($tempdest); $this->logger->addInfo('Conversion successfull'); $job->sendStatus(100, 100); return $result; }