2012-08-29 28 views
0

我有一個完全用通常的html/css/javascript編寫的web應用程序,以及一些使用jQuery的其他內容。 我也有一個非常龐大的程序用python編寫,它需要在我的web應用程序上對用戶提供的輸入進行操作。 目前,我正在從Php寫入輸入到一個文件,並閱讀它在Python中做我的操縱。 有沒有更好的實現這種同步? 另外,只要有用戶點擊提交按鈕,我需要執行我的python程序。我如何讓python等待這個?結合python和Php的Web應用程序

+3

你試圖做什麼? – Sergey

回答

3

由於常規文件的嚴重I/O操作,您的同步方式會產生相當大的開銷,因此您必須處理鎖定,即使小的負載增長也會導致整個系統崩潰。

什麼我建議你就是要與常用的兩個進程之間交換信息的IPC技術結識:

  1. 在Python有一個subprocess模塊,這將有助於您使用管道的進程之間的通信,其比使用普通文件更可靠。 PHP還具有popen函數,它允許您調用python進程並將數據傳遞給它以進行進一步處理(通過PIPES)。
  2. 另一種方法是在兩個進程之間建立一個從頭開始的套接字通信,其中您的PHP部分將成爲套接字客戶端,而Python部分將成爲套接字服務器(需要更多以前的工作方式)。
  3. 您還可以使用更好的方式排隊數據以進一步處理(我的意思是比常規文件更好),例如,使用消息服務(其中有很多,RabbitMQ,Redis Pub/Sub等),這些服務絕對可用於Python或PHP。

還有一些技術被排除在範圍之外,但是我已經選擇了3種排列IPC的方法,因爲它們是最簡單和最快的實現。

你可以嘗試所有這些,或者一些,並分析什麼是你的特定情況下的最佳方式。

-2

爲什麼要在php中編寫網站後端如果你的應用程序已經在python中的大部分?

要回答您的問題 - http://wiki.python.org/moin/IntegratingPythonWithOtherLanguages

但我建議,你放棄愚蠢的PHP,並採取一些像Django的Python框架,並使用它建立你的後端。如果你這樣做,那麼集成Python代碼很簡單,只需導入一個類/方法即可。