2013-04-25 76 views
0

我的網站有使用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

回答

0

不幸的是我認爲在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

0

幾個並行的PHP進程(不是線程)可以使用Gearman進行嘗試http://gearman.org/用於Gearman的

1

PHP本身並不支持並行處理確實如此。然而,有如下的方法來模擬它:http://www.d-mueller.de/blog/parallel-processing-in-php/

它背後的想法是,你做一個進程管理器或類似的東西,管理在後臺運行的線程,並檢查其狀態。因爲它們是後臺進程,所以你可以啓動多個進程。當經理完成後,你的經理可以繼續你的劇本。