2011-02-04 114 views
3

現在我使用exec()從PHP啓動Python腳本,因爲我必須將一些動態變量從網站/ MySQL傳遞到命令行。不過,我想提高這個操作的速度和安全性,所以我想使用WSGI。我在想,可能會將Python腳本嵌入到WSGI文件中,該文件將使用PHP直接(或間接)傳遞的變量......但我怎麼能這樣做呢?我從來沒有用過WSGI,所以我甚至不知道這是否是一個愚蠢的問題:)如何通過使用WSGI執行Python腳本來避免PHP exec()?

+1

您是否有權訪問Apache配置(或您正在使用的Web服務器)? – MeanEYE 2011-02-04 14:02:32

+0

是的,我在我自己的專用服務器上安裝了Apache。 – Jon 2011-02-04 15:34:47

回答

1

首先,你可以在Python或PHP中做到這一切嗎?使用多種語言通常被視爲反模式。這並不是說這總是一個糟糕的主意,但是你應該首先質疑,爲什麼只有這樣,如果你確信這是一個好主意,才能繼續前進。

至於你想做什麼細節,有幾個選項:

  1. 如果使用Apache,您可以使用virtual()函數發出通過Apache新的請求。

    這是假設你正在使用mod_php和mod_wsgi。基本上,你建立你要傳遞的變量的查詢字符串,並將其命名爲喜歡:

    virtual('path/to/python.py?'.$query); 
    
  2. 寫自己的PHP WSGI網關。基本上,將WSGI規範編碼到一個庫中,並從PHP內部明確地調用該WSGI規範。

  3. 堅持呼籲它從exec()(這可能是現在的最佳選擇)。

你必須考慮的是,跨語言之間包含固有的開銷。你永遠無法克服,這只是野獸的本質。相反,我建議將整個請求保留在一個環境中,並在整個環境中處理它...

相關問題