php在两个操作之间等待(多线程)

时间:2013-07-16 14:41:48

标签: php multithreading

我有像这样的代码结构

   
   echo "First Operation";
   sleep(3);
   echo "Second Operation";

我想尝试模拟多线程,但我无法做到,睡眠功能在那里毫无意义,但我找不到其他选择。

1 个答案:

答案 0 :(得分:1)

我必须同意PHP不是为多线程而构建的。因此,您创建的脚本将始终在一个线程中运行。有一些例外。当您调用shell命令时,有可能在您不需要输出时触发并忘记该命令。它并行运行,但您无法访问结果。

PHP旨在执行另一个指令。

要创建类似并行工作脚本的东西,您需要利用一些外部系统。所有这些技巧都与您尝试完成的实际解决方案有关。让我给你举个例子。

您可以使用像Rabbit MQ这样的消息队列系统作为一个脚本与另一个脚本之间的分离。让我们说script1永远在队列中监听工作。另一个脚本,比如说script2,是(根据要求)将一个工作引入队列并继续处理其他东西,同时script1正在挑选它,做一些事情并返回答案。当script2与其他东西完成时,它可以从queu读取结果并完成你想做的任何事情。

这实际上是一个非常棘手的理论概念,但它可能会给你一个想法。但是如果没有像队列那样的外部组件,那么php将无法工作多线程。

我希望这能帮到你!