2011-10-24 19 views
0

好的,我必須問這個。如何更有效地從php執行python?

當我使用shell_execexec或其他命令從php執行python代碼時,我的頁面加載速度減慢了10倍。因此,即使在我的本地主機上,execsystem函數的空白頁面的加載時間大約爲0.01秒,而在正常情況下,這個時間大約爲0.001秒。在嘗試完成我的任務時,我感到更加適應python(一個根據我的需要提取信息的html解析器,找到大多數遞歸單詞,爲它們編制索引等等)[1]。然而,這些函數的緩慢讓我再次想到在PHP中重寫相同的類。沒有任何其他有效的方式來從PHP執行python?

* [1]我更喜歡編寫自己的類而不是第三方解析器,因爲它們根本不滿足我的需求。

+0

出於興趣,爲什麼你不使用Python的一切,然後呢?現在這聽起來像PHP只不過是一個榮耀的Python啓動器。 – janmoesen

+1

@chown mod_python不是啓動Python的首選方式。首選的方式是mod_wsgi – cwallenpoole

+0

@janmoesen,尼斯問題:)原因是因爲我對PHP也很熟悉,而且我正在構建一個Web應用程序。由於php純粹是爲網絡應用程序構建的,所以在攻擊網站時我更喜歡使用php。然而,對於這種情況,我已經在開始這個Web應用程序之前在python幾個月前創建了這個類。此外,python的列表,字典和元組更適合於完成我的任務。然而,似乎我將不得不堅持PHP的數組爲這種情況下,並重寫在PHP中的整個類:) – Shaokan

回答

1

如果您正在爲每個頁面請求分配一個進程,這將會導致性能下降。考慮讓你的python進程作爲守護進程運行,並使用某種排隊或IPC進行通信。

分岔進程是一個昂貴的操作,應該避免在每個請求的基礎上。

進程間通信建議:gearman,zeromq,其中others