2011-09-03 120 views
3

是否有可能在js的web服務器的後臺啓動php腳本,並讓它運行,即使您更改頁面或根本不訪問該站點,然後獲得當前狀態,如果您在第二時間調用php腳本?有沒有辦法啓動一個PHP腳本並獲取狀態?

這個PHP腳本將處理數據數小時,併爲每個循環的X秒/分鐘睡眠。如果我之前問的是可能的話,如果php只在腳本結束時纔會產生輸出,我甚至可以從中獲得「回聲」?

也許這不是PHP的工作?

謝謝

編輯:在Windows機器上使用Apache

回答

1

在Windows中,它與UNIX沒有多大區別。

首先,您需要創建一個帶有運行循環的PHP腳本。例如,看看這個:http://code.google.com/p/php-apns/。這是一個PHP「守護進程」:主腳本PushMonitor.php永遠運行,因爲它有一個無限循環。它定期輪詢一個隊列,然後執行這些操作,然後等待。真的很簡單,其實!

在你的情況下,問題是你想從PHP腳本啓動「守護進程」。 你可能想看看這個:http://robert.accettura.com/blog/2006/09/14/asynchronous-processing-with-php/(第一個例子代碼)。你會執行一些像launchBackgroundProcess('php myscript.php')

請注意,在代碼中有「start/b」命令(以及UNIX命令末尾的「&」)。這很重要,因爲否則當Web頁面的PHP腳本終止時,您的進程將被終止(子進程在父進程死後死!)。另外,請記住「php」可執行文件(cli)必須位於您的路徑中(因此您可以從命令行執行「php」)。

由於啓動後臺進程的頁面的PHP腳本即將終止,因此不能直接用簡單的方法捕捉「回聲」。我的建議是將所有輸出寫入文件(或數據庫等),然後在必要時從該源讀取內容。 因此,而不是「回聲」,您將使用file_put_contents()等。

+1

作品!謝謝! –

3

這當然是可能的 - 我有一個全天候運行PHP編寫的幾個腳本。退房Creating Daemons in PHP。它有關於如何'守護'一個PHP腳本的好信息,以便它像服務一樣運行,並且還包括信號處理。

要獲得調試輸出,您將重定向到日誌文件。因爲有很多可用的信息,請搜索「unix重定向輸出」。

+0

謝謝。我忘了說這是一個帶有Apache的Windows服務器! 無論如何,這似乎是好的,我可以在數據庫中記錄或寫入當前狀態並檢索它。問題在於那篇文章和其他人談論使用UNIX系統來運行它們。我需要使用瀏覽器從網頁啓動。 –

+0

這聽起來像你試圖做的是定期啓動一個PHP腳本來處理一些數據。我不是100% - 但我不認爲在Windows中編寫批處理作業以使用php解釋器啓動腳本並將其加載到Windows任務計劃程序中以便間隔運行它並不困難。允許網頁在您的機器上運行作業通常不是一個好主意。 – tdk2fe

相關問題