2013-02-22 60 views
4

我有一個PHP腳本已經運行了一個星期,因爲它正在做大量的數字處理 - 它沒有掛起,只是做了很多工作。問題是我不知道它在哪裏,所以我不知道它會在1小時還是1個月內完成。 (是的,我應該把東西放在那裏,以便告訴我,但現在已經太晚了。)是否有可能檢查PHP腳本在運行時正在做什麼?

有沒有什麼辦法可以找出腳本在做什麼?或者甚至更好,從當前狀態中提取變量?

+3

「數字處理」「PHP」和「已經運行了一週」並沒有讓我感覺良好。 – 2013-02-22 07:55:49

+1

它是否正在執行您可以查找的任何文件寫入/數據庫寫入? – webnoob 2013-02-22 07:55:54

+0

我同意:任何其他語言本來會更好,但我在PHP中編程得最好......所以它纔有意義。整體節省時間。 – Alasdair 2013-02-22 07:56:42

回答

0

在Windows上,您可以檢查php.exe在與微軟的procmon.exe做什麼。 它不會給你一個關於變量等的完整反饋,但你可以檢查任何文件系統操作(php經常使用)。 PHP有一些內部函數存儲爲額外的.exe文件。你可以檢查與procmon如果PHP的電話是他們...

+0

行。我在Linux CentOS 6上。有什麼事嗎? – Alasdair 2013-02-22 08:06:18

0

我希望腳本已完成其任務,現在。作爲一般指南,在Linux上,使用top命令檢查系統上運行的進程的情況。它爲您提供了所有正在運行的進程的窗口。
要專注於單個進程,您可以通過ps命令獲取其PID(進程ID)。所以,你可以運行:

$ ps的-e

這個命令將給出一個4列輸出。左欄是PID,右欄是腳本名稱。假設你在右欄找到腳本名稱,你檢查它的PID是3468.然後運行

$頂部-p 3468

你得到定期更新頂部窗口。您可以在那裏選擇不同類型的信息。通常你首先檢查%CPU和VIRT。 VIRT列非常有用,因爲如果它不斷增加,那麼腳本中的內存泄漏幾乎就是一個明確的標誌。
或者,您可以使用htop並突出顯示您選擇的過程,如果您已將它安裝在系統上。

0

我寫了一些需要很長時間才能運行的PHP腳本。通常情況下,腳本會使用一些統計數據偶爾更新數據庫表(例如:如果在循環中,每循環10000次,具體取決於循環的權重......也可以通過microtime的樣本來了解特定步驟需要多長時間)。然後,我可以查看錶格中的「統計信息」,查看腳本如何執行,或者執行了哪些步驟。我很同意其他人對PHP的看法,但並不是最好的語言,但是我發現這種方法運行良好(我的PHP腳本運行穩定了好幾個月)。

0

已經參考答案..只需出示一個腳本運行。這是你已經說過是不是你需要......

對於已經運行不記錄/存儲任何信息的腳本。 。那麼,我能想到的唯一真正的選擇是檢查它正在處​​理什麼。所以,如果它正在處理文件/數據庫..你應該能夠看到更改/修改的結果。

如果它純粹是所有的記憶,你或多或少會失去運氣,除非你碰巧使用了類似會話的東西。

但簡單地檢查腳本是否正在運行...根本沒有任何幫助..因此,如果它處理數據庫,檢查數據庫,如果它的處理文件,檢查文件..否則你的運氣不好。

當談到重型cruncher腳本,例如,當我做地理編碼...我將結果/處理的數據存儲在本地文件..所以,如果腳本失敗或停止..我可以恢復..但這樣做的好處是我可以運行另一個腳本並閱讀這些文件並查看進度或最後執行的步驟。

這可以恢復或重新開始嗎?如果它可以恢復,停下來,讓它登錄或什麼東西,所以你可以監控它?否則,你只需要等待它完成。

相關問題