【发布时间】:2012-02-01 10:54:40
【问题描述】:
有没有办法在 PHP 中实现进程间(或线程)通信,但仍保持一切异步运行?
我想要一个创建 4 个进程然后立即终止的脚本。 4 个进程中的每一个都应该执行一个操作,完成后它应该通知某人(可能是另一个脚本?)它完成了。所以我想知道所有 4 个脚本什么时候完成,这样我就可以将我的状态从 retrieving 更新为 done。
这可能吗?最好不要重新编译 PHP(我读到这是使用线程所必需的),但如果有必要我会这样做。
【问题讨论】:
-
为什么创建进程的脚本必须立即终止?
-
Preferably without re-compiling PHP (I read this is required for working with threads)- 真的吗?在哪里? AFAIK 不可能对 PHP 进行多线程处理,如果你找到了一种我非常想知道的方法... -
@MichaelMior:因为我不希望用户必须等到 4 个子脚本完成,因为它们需要很多时间。 @DaveRandom:不,不支持原生多线程,但blog.motane.lu/2009/01/02/multithreading-in-php 展示了如何模拟它们,但需要重新编译 PHP 才能使
pcntl_fork工作。 -
然后您可以简单地使用
ignore_user_abort()并将输出刷新到浏览器以允许脚本在后台继续运行。 -
看看这个 [post][1] 它对我有用 [1]:stackoverflow.com/a/13690590/599993
标签: php multithreading interprocess inter-process-communicat