2014-12-02 36 views
0

我工作的图像处理与PHP的问题,步骤是:PHP图像处理队列,以完成作业

  1. 用户上载多张图像。
  2. 的ImageMagick/GraphicsMagick工具做4份不同的尺寸
  3. 这些副本是由jpegtran
  4. 一旦加工处理,被上传到亚马逊S3

我的问题:

  • 我怎么能知道当完成imagemagick开始jpegtran?
  • 我怎么知道什么时候启动jpegtran开始上传到S3?

我正在使用Gearman,是否有一个imagemagick工作者,jpegtran和另一个工人到S3的另一个工人正确?

感谢您的帮助

回答

0

您的工人可以开始下一个过程。

class ImagemagickWorker 
{ 
    public function imagemagicProcessing (GearmanJob $job) 
    { 
     // your image processing code 
     $gmClient = new GearmanClient(); 
     $gmClient->do('jpegtranProcessing', $workload); 
    } 
} 

如果您需要对处理进行更复杂的控制,请考虑使用任务和定义回调。

class ImagemagickTask 
{ 
    public function imagemagicProcessing ($workload) 
    { 
     // do whatever you need to do 
     $gmClient = new GearmanClient(); 
     $gmClient->setCompleteCallback (
      function (GearmanTask $task) use ($gmClient) 
      { 
       // repeat the process 
      } 
     ); 
     $gmClient->addTask('imagemagicProcessing', $workload); 
     $gmClient->runTasks(); 
    } 
} 
+0

非常好的解决方案。谢谢!!!! – Jesus 2014-12-25 17:33:46