PHP中的并行处理?

问题描述:

我的网站有使用ob_start()和$ content = ob_get_clean()的源页面。在他们里面,我使用一个函数多次使用curl和bing将单词/短语翻译成指定的语言。PHP中的并行处理?

如果在数据库中查找它之前已经完成了翻译,否则它会从bing中串行回复。我希望它能够并行执行,以便更快地翻译页面。有任何想法吗?

+1

我打算不要使用自动翻译。结果将是非常糟糕的。看看你是否可以得到志愿者或帮助你翻译网页。 – Jon 2013-04-25 08:07:20

+0

我的老板想要使用自动翻译......尽管我已经做到了让人们可以编辑以前存储在数据库中的翻译。 – 2013-04-25 08:09:45

+0

啊,如果你必须这样做,那么你一定是我想的。至少你是以真正的翻译方式建立起来的。你在做短语或单词吗?单个作品会变得更糟,因为上下文可能会根据短语中的使用方式/时间而变化。 – Jon 2013-04-25 08:13:20

不幸的是我认为在PHP中没有并行处理。 就我所知,模拟并行处理的唯一方法是使用一个聪明的cron作业,并启动它的多个实例。

+0

eesh。如果你的“cron”工作是这样做的,那肯定不是很聪明。在技​​术上,你可以使用'system('/ path/to/php /path/to/script.php &');'作为'&'将允许返回页面而不等待'script.php'完成,但是_really_不应该被使用 – Jon 2013-04-25 08:09:08

+0

因为系统命令不会异步运行,所以不会给你多线程效果。 – 2013-04-25 08:15:56

+0

但是,令人惊讶的是,&&在结尾命令会让你退出'系统'并让你的脚本继续 - 这在技术上是一个并行的过程,尽管你不会从中得到回报。 – Jon 2013-04-25 08:20:01

几个并行的PHP进程(不是线程)可以使用Gearman进行尝试http://gearman.org/用于Gearman的

PHP本身并不支持并行处理确实如此。然而,有如下的方法来模拟它:http://www.d-mueller.de/blog/parallel-processing-in-php/

它背后的想法是,你做一个进程管理器或类似的东西,管理在后台运行的线程,并检查其状态。因为它们是后台进程,所以你可以启动多个进程。当经理完成后,你的经理可以继续你的剧本。