PHP7上的异步/线程与FPM

时间:2016-12-28 13:13:32

标签: php asynchronous pthreads

我发现pthreads不适用于网络环境。我在 Linux Debian 上使用 PHP7.1 on FPM ,我也使用Symfony 3.2。我想做的就是,例如:

  1. 用户发出请求并PUT一个文件(1GB)
  2. PHP Server接收文件并进行处理。
  3. 立即将true返回给用户(jsonResponse),而不等待处理上传文件
  4. 稍后,处理文件完成后(移动,复制,复制任意内容)只需添加一个事件或从后台进行回调并通知用户。
  5. 现在。为此,我创建了Console Command。我从后台执行Process('bin/console my:command')->start();并进行处理。但这对我来说是用火箭筒杀死了一只苍蝇。我必须将许多变量传递给这个可执行命令。

    我想要的只是创建另一个线程,只返回用户而不等待处理。

    您可能会说这是重复。并指向pthreads 但是 pthreads 声明它仅适用于CLI 。最后一个版本的pthreads也不适用于symfony。 (致命错误)。

    我现在陷入困境,并怀疑我是否应该继续为每个上传的文件创建流程,或者 移动 python -> django

1 个答案:

答案 0 :(得分:3)

你不想要线程。你想要一个工作队列。看看Gearman或类似的事情。

  

Gearman提供了一个通用的应用程序框架,可以将工作分配给更适合工作的其他机器或进程。它允许您并行工作,负载均衡处理以及在语言之间调用函数。它可用于各种应用程序,从高可用性网站到数据库复制事件的传输。换句话说,它是分布式处理如何通信的神经系统。