我发现pthreads
不适用于网络环境。我在 Linux Debian 上使用 PHP7.1 on FPM ,我也使用Symfony 3.2
。我想做的就是,例如:
PUT
一个文件(1GB)true
返回给用户(jsonResponse
),而不等待处理上传文件现在。为此,我创建了Console Command
。我从后台执行Process('bin/console my:command')->start();
并进行处理。但这对我来说是用火箭筒杀死了一只苍蝇。我必须将许多变量传递给这个可执行命令。
我想要的只是创建另一个线程,只返回用户而不等待处理。
您可能会说这是重复。并指向pthreads
。 但是 pthreads 声明它仅适用于CLI 。最后一个版本的pthreads也不适用于symfony。 (致命错误)。
我现在陷入困境,并怀疑我是否应该继续为每个上传的文件创建流程,或者 移动 到python -> django
答案 0 :(得分:3)
你不想要线程。你想要一个工作队列。看看Gearman或类似的事情。
Gearman提供了一个通用的应用程序框架,可以将工作分配给更适合工作的其他机器或进程。它允许您并行工作,负载均衡处理以及在语言之间调用函数。它可用于各种应用程序,从高可用性网站到数据库复制事件的传输。换句话说,它是分布式处理如何通信的神经系统。