2011-10-07 77 views
2

我創建了一個使用psexec調用另一個腳本的腳本,該腳本調用psexec來運行我的命令行程序。在Windows的後臺運行PHP「exec()」?

對psexec和其他腳本進行如此多的調用的原因完全是爲了讓我的PHP腳本不必等到該過程完成才能輸出到瀏覽器。

有沒有辦法可以做到這一點,而無需使用psexec?我在使用psexec時遇到了問題,所以我想從程序中徹底刪除它。

我運行Windows 2008

編輯:我改變了標題,我想這將是一個更準確的標題。我在012.net的網頁上找到If a program is started with this function, in order for it to continue running in the background, the output of the program must be redirected to a file or another output stream. Failing to do so will cause PHP to hang until the execution of the program ends.exec(),但不知道該怎麼做。

+0

究竟是你想做些什麼?只是好奇,因爲我不知道有一種方法可以脫離使用後臺腳本... – espradley

回答

5

包括在命令行重定向:

exec('program.exe > NUL') 

,或者你可以修改你的程序明確地關閉標準輸出,在C這將是

CloseHandle(GetStdHandle(STD_OUTPUT_HANDLE)); 

可能(文檔沒有說)您可能需要重定向/關閉標準輸出和d標準錯誤:

exec('program.exe > NUL 2> NUL') 

CloseHandle(GetStdHandle(STD_OUTPUT_HANDLE)); 
CloseHandle(GetStdHandle(STD_ERROR_HANDLE)); 
2
+0

如果我嘗試從'exec()'使用'start',我是否仍然需要等待該進程在PHP腳本完成之前完成? – Rob

+2

@Rob哦,對不起,我試過了,你說的沒錯。這很奇怪。我真的認爲它是獨立開始的。 – Boann

+0

沒關係,無論如何我都很欣賞這個嘗試。謝謝 – Rob