1. 程式人生 > >PHP執行python指令碼的passthru()函式使用及注意事項總結

PHP執行python指令碼的passthru()函式使用及注意事項總結

PHP中執行python指令碼的函式,我用的是passthru():

passthru() 允許您執行外部程式,並在螢幕上顯示結果。不需要使用 echo 或 return 來檢視結果;它們會顯示在瀏覽器上。

PHP執行python指令碼的用法:

$path="python 指令碼絕對路徑/指令碼檔名.py "; //需要注意的是:末尾要加一個空格,否則傳參失敗
$params = "要傳入python指令碼的引數"; #傳遞給python指令碼的入口引數
passthru($path.$params); //只能接收打印出來的資訊

以上三行程式碼就實現了PHP執行python指令碼,並將引數傳入python指令碼。

python指令碼獲取PHP傳遞的指令碼入口引數$param:

import sys
params = sys.argv[1] #即為獲取到的PHP傳入python的入口引數

需要注意的是:

1. passthru()會將python指令碼中print的資訊顯示到瀏覽器上,因此應該將python指令碼要傳給PHP的引數print 出來。

2. passthru()執行的python指令碼貌似是無法執行組合指令碼的,即要執行的python中用到的所有程式最好在一個指令碼檔案中,

不要以包的形式從其他檔案中匯入使用一些函式。

原因是,我今天除錯passthru()半天一直沒有結果輸出,後來猜測可能是上述原因,於是將分佈在各個包中的類和函式合併到一個這一個指令碼檔案中在,

就發現網頁上能夠顯示正確結果了。

3. 執行python指令碼檔案可以用ajax非同步請求執行,效果好一些。

4. 執行的指令碼檔案可能會佔用很長時間,出現HTTP請求超時問題,這個問題的解決方法是在PHP中加一行解除HTTP連線限制的程式碼:

@set_time_limit(0); //解除HTTP連線的時間限制

    希望能幫到跟我遇到一樣問題的人。微笑