0

我有这样的代码结构

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

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

4

1 回答 1

1

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

PHP 被设计成一个接一个地执行一条指令。

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

您可以使用像 Rabbit MQ 这样的消息队列系统来分隔一个脚本和另一个脚本。假设 script1 一直在队列中监听工作。另一个脚本,比方说 script2,是(根据要求)将一项工作放入队列并继续处理其他工作,而 script1 正在接收该工作,做某事并返回答案。当 script2 处理完其他内容后,它可以从队列中读取结果并完成您想做的任何事情。

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

我希望这对你有帮助!

于 2013-07-16T15:49:52.657 回答