2011-03-22 43 views
2

我正在運行一個連續的PHP循環,通過使用exec("php ...");執行另一個PHP文件。該計劃是爲執行的腳本運行,然後休眠2秒鐘,然後重新開始。但是,似乎我的循環每2秒啓動一個新實例。這麼長時間的問題,我怎麼才能讓我的第一個PHP腳本等待腳本nr 2的執行完成?另一個PHP文件的PHP exec - 如何讓我的腳本等待?

所有這些都使用命令行運行。我還希望腳本nr 2中的回顯函數顯示在命令行中。

任何想法都會有所幫助。

謝謝

回答

2

Exec不維護實例之間的任何狀態信息。你可以:
循環在你的下標
OR
您可以設置某種環境變量或者在標開始時讀取,並在結束寫入。
OR
你可以有標讀/寫文件以類似的方式
OR
你可以在參數傳遞給誰的輸出被捕獲

對於輸出到屏幕的下標,你可能會玩與周圍的其他的exec /系統調用:
EXEC
了shell_exec
中繼
系統

我相信passthru()將工作。另一種可能性是調用exec(),使用輸出參數從下標中捕獲輸出字符串。然後在返回下標時回顯該輸出。

我還認爲,利用輸出參數(或捕獲在一個變量函數的結果)將導致exec來等待命令是繼續之前完成。

+0

這是一個非常有趣和可能的理論。我稍後會測試它 – Hubro 2011-03-23 09:05:53

0

問題是,一旦你執行腳本,它就會運行。另一位高管會開始另一個實例,就像你發現的一樣

你可以做的是 把睡眠放在執行的腳本中。一旦它開始運行,它會自己睡覺。您可以查看設置執行時間限制並可能忽略用戶中止。 您可以創建一個函數並讓腳本調用該函數。它將在執行後休眠並再次調用該函數。

 
// maybe set time limit here 
Function loop() 
{ 

Sleep(120); 
//you can make a check whether to loop or not. 
Loop(); 
} 

Loop(); 
相關問題