我发现pthreads
不适用于Web环境。我使用PHP7.1在FPM上Linux Debian我也使用Symfony 3.2
。所有我想做的事,例如:使用FPM在PHP7上异步/线程
- 用户提出的要求和
PUT
文件(即1GB) - PHP服务器接收文件并处理它。
- 立即返回
true
用户(jsonResponse
)没有等待处理上传的文件 - 后来,当处理文件完成(移动,复制,复制任何你想要的)只需要添加一个事件或背景不回调,并通知用户。
现在。为此,我创建了Console Command
。我从后台执行Process('bin/console my:command')->start();
,并执行我的处理。但是这对我来说是用火箭筒杀死一只苍蝇。我必须将许多变量传递给此可执行命令。
所有我想创建另一个线程,只是返回给用户而无需等待处理。
你可能会说这是重复。并指向pthreads
。 但是 pthreads 声明它仅用于CLI。 pthreads的最后一个版本也不适用于symfony。 (致命错误)。
我停留在这一点上有疑问,如果我要留在创建每个上传的文件或移动到python -> django
你不想要线程。你想要一个工作队列。看看Gearman或类似的东西。 – Gordon
我真的很喜欢它。我期待着doc。我认为这会更适合我的需求。我在我的问题中还提到了**队列**,但我稍后再删除。在看到Gearman和队列机制后,我决定去找工作队列。此外,请阅读说明 - 例如,每次执行2个线程,并假设400客户端进入服务器,它将运行800个线程。这不是我想要的。 Gearman是这里的关键。我会深入研究它。谢谢。哦!你可以添加这个作为答案:) – xangr
也许你正在寻找异步处理:https://gist.github.com/LeonanCarvalho/62c6fe0b62db8a478f502f84c5734c83 – LeonanCarvalho