代码之家  ›  专栏  ›  技术社区  ›  Sander Marechal

PHP(CakePHP)中的异步处理或消息队列[关闭]

  •  33
  • Sander Marechal  · 技术社区  · 16 年前

    我正在CakePHP中构建一个网站,处理通过XML-RPC API和web前端上传的文件。文件需要由ClamAV扫描,需要生成缩略图等等。所有需要一些时间的资源密集型工作,用户不应该等待。因此,我正在研究PHP的异步处理,特别是CakePHP。

    我偶然发现了 MultiTask plugin dropr beanstalkd PHP_Fork

    • 我应该使用什么消息队列?dropr?豆茎?还有别的吗?

    对此有任何意见、建议、评论、陷阱或火焰吗?

    4 回复  |  直到 11 年前
        1
  •  25
  •   Community CDub    8 年前

    我取得了很好的成绩 BeanstalkD exit(UNIQNUM); ',当脚本检查它并实际退出时)。这样,重新启动的PHP脚本会清除可能已使用的任何内存,并且可以在每运行25/50/100个作业时重新启动。

    user profile

    series of articles 关于Beanstalk和工作排队的话题)

        2
  •  4
  •   Peter Stuifzand    16 年前

    如果你使用像beanstalkd这样的消息队列,你可以启动任意数量的进程(即使在同一台服务器上)。每个工作进程将从队列中获取一个作业并对其进行处理。如果需要更多容量,可以添加更多工作进程和更多服务器。

    使用单线程worker的好处是,您不必处理进程内的同步。作业队列将确保没有作业会被处理两次。

        3
  •  0
  •   neilcrookes    16 年前
        4
  •  0
  •   gdm    10 年前