簡體   English   中英

PHP和Python之間的通信

[英]Communication between PHP and Python

我正在嘗試為一些python腳本構建一個Web界面。 問題是我必須使用PHP(而不是CGI),我執行的一些腳本需要相當長的時間才能完成:5-10分鍾。 PHP是否可以與腳本通信並顯示某種進度狀態? 這應該允許用戶在任務運行時使用網頁並在此期間顯示某些狀態,或者只在完成時顯示消息。

目前使用exec()並在完成時我處理輸出。 服務器在Windows機器上運行,因此pcntl_fork將無法運行。

稍后編輯 :使用另一個PHP腳本使用ajax提供主頁信息似乎不起作用,因為服務器殺死它(它達到最大執行時間,我真的不想增加它,除非必要)

我正在考慮基於套接字的通信,但我不知道在我的情況下這有什么用處(一些提示,也許?

謝謝

您需要進程間通信 插座是第一個浮現在腦海中的東西; 你需要設置一個套接字來監聽 PHP中的連接(在同一台機器上),並設置一個套接字連接到Python中的監聽套接字並將其狀態發送給它。

從Python文檔和Python socket模塊的文檔(特別是最后的示例)中查看此套接字編程概述 我確信PHP有類似的資源。

一旦您對要構建的內容有了更具體的了解並需要幫助,請隨意在StackOverflow上提出一個問題(如果尚未回答)。

我認為你必須使用元刷新,並且可能讓python將狀態寫入文件,然后從中讀取php。

您也可以使用AJAX使其更具動態性。

此外,可能不應該使用exec()......這會打開一個漏洞世界。

您可以使用像Gearman這樣的排隊服務,PHP中的客戶端和Python中的工作者,反之亦然。

有人在這里創建了一個示例設置。

https://github.com/dbaltas/gearman-python-worker

不幸的是我的朋友,我相信你需要按照你的要求使用套接字。 :(我沒有使用它們的經驗,但是這個關於套接字/網絡編程的Python教程可能會幫助你獲得所需的Python套接字交互。(Beau Martinez的鏈接似乎也很有希望。)

您還需要獲得一些PHP套接字連接,以便它可以請求狀態。

接下來,我的想法是你的Python腳本可能會在循環中運行。 因此,我會在該循環的一部分開頭放置“檢查狀態請求”。 它會回復一個狀態,而該腳本中的后續循環將以更高的狀態回復...等。

祝好運!

編輯:我認為Thomas Schultz的文件撰寫建議可能是最容易實現的。 唯一的缺點是等待打開文件 - 您需要確保您的PHP和Python腳本不會掛起或返回失敗而不再嘗試。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM