2013-04-07 87 views
0

我有一臺運行IIS和SQL Server 2012的Windows 2012 Server。Windows服務器查殺長時間運行的PHP進程

我試圖從命令提示符運行PHP腳本。該腳本需要大約1小時才能運行。如果我像這樣直接從命令行運行它 - c:\ PHP> php.exe「D:\ Web \ phpScript.php」它運行良好。再次運行大約需要1個小時,但它完成很好。

的事情是我需要從另一個PHP頁面運行它。所以這段代碼 - exec('start c:\ php \ php.exe「D:\ Web \ phpScript.php」');在PHP中運行腳本。當我從PHP運行它時,它運行的時間大約爲30分鐘左右,但由於某種原因,Windows在30分鐘後最終終止了進程。

我一直在看在Windows任務管理器並不能看到在路上時,我直接運行它從命令提示符或當我使用PHP來運行該命令的任何差異的過程中運行比較。它們都顯示爲後臺進程,並且在任務管理器中看起來完全相同,但出於某種原因,Windows正在從PHP中運行並且不是從命令提示符直接運行的那個進程。

我都甚至試圖運行PHP的一個實時想也許如果它有更高的優先級也不會被殺,但沒有幫助。

我真的堅持了這一點。

任何幫助將是偉大的。

謝謝!

+0

使用進程管理器,而不是任務管理器。它還會顯示調用二進制文件的父進程。如果它在父進程空間內運行,則父進程可能會在30分鐘後注意並終止,而從CLI運行它時則不會在意。 – hakre 2013-04-07 18:49:07

+0

是的,你是對的。它運行在原來的php-cgi.exe中,它啓動了它。所以它看起來像PHP正在殺死它。我在PHP頁面上玩過time_limit,但我認爲這不會發揮作用。任何其他的想法如何讓PHP停止殺死它? – Sequenzia 2013-04-07 19:24:04

+0

它可能是您的網絡服務器的設置。你使用哪個網絡服務器?哪個服務器API? – hakre 2013-04-07 19:29:06

回答

0

如果它與你的PHP配置做的,你可以強制允許一定的執行時間與此在腳本的開始

set_time_limit(60*60*2); // allows 2 hours execution time

然後執行外部文件只使用include('D:\Web\phpScript.php');在腳本。

http://php.net/manual/en/function.set-time-limit.php

否則,如果它是一個服務器的問題,我百思不得其解。當然,您可以... ...在您的Web瀏覽器中運行它,而不是在命令提示符下運行,如果PHP安裝在機器上。

相關問題