我发现pthreads不适用于web环境。我在linux debian上的fpm上使用php7.1,我还使用Symfony 3.2。我只想做,例如:
用户发出请求并PUT一个文件(1GB)
php服务器接收并处理该文件。
立即将true返回给用户(jsonResponse),而不等待处理上载的文件
稍后,当处理文件完成时(移动、复制、复制您想要的任何内容),只需添加一个事件或从后台执行回调并通知用户。
现在.为此我创建了Console Command。我从后台执行一个Process('bin/console my:command')->start();,然后进行处理。但这对我来说是用火箭筒杀死一只苍蝇。我必须将许多变量传递给这个可执行命令。
我只想创建另一个线程,不需要等待处理就返回给用户。
你可以说这是重复的。指向pthreads。但是pthreads声明它只用于cli。另外,pthreads的最后一个版本不适用于symfony。(致命错误)。
我现在陷入了困境,怀疑我是否应该继续为每个上传的文件创建进程,或者移动到python -> django

最佳答案

你不要线。你想要一个作业队列。看看Gearman或类似的东西。
gearman提供了一个通用的应用程序框架,将工作分配给其他更适合做这项工作的机器或流程。它允许您并行工作,负载平衡处理,以及在语言之间调用函数。它可以用于各种应用程序,从高可用性网站到数据库复制事件的传输。换言之,分布式处理是如何进行通信的神经系统。

10-04 13:36