PHP图像处理队列,完成作业的问题

时间:2014-12-02 20:41:20

标签: php amazon-s3 imagemagick gearman

我正在使用PHP进行图像处理,步骤如下:

  1. 用户上传多张图片。
  2. ImageMagick / GraphicsMagick制作4份不同尺寸的副本
  3. 这些副本由jpegtran
  4. 处理
  5. 处理完成后上传到Amazon S3
  6. 我的问题:

    • 我怎么知道完成imagemagick什么时候开始jpegtran?
    • 我怎么知道finsihed jpegtran何时开始上传到S3?

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

    感谢您的帮助

1 个答案:

答案 0 :(得分: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();
    }
}