2011-09-03 103 views
6

我有一個PHP腳本,用於查詢數據庫中的工作列表,並根據它在數據庫中找到的內容(基本上是一個進程隊列)從其他PHP腳本中觸發。PHP shell_exec等待腳本完成?

隊列運行腳本執行的一些腳本可能需要30秒左右才能完成運行(生成PDF,調整圖像大小等)。

問題是隊列運行腳本中的shell_exec()調用處理腳本,但之後不等待它們完成,導致隊列未完成。

隊列運行腳本:

#!/usr/bin/php 
<?php 
    // Loop through database and find jobs to be done 
    shell_exec(sprintf("/root/scripts/%s.php", $row['jobName'])); 
?> 

作業腳本:

#!/usr/bin/php 
<?php 
    shell_exec("/usr/bin/htmldoc -t pdf --webpage test.html > test.pdf"); 
    // Update database to mark job as completed 
?> 

直接在命令行運行作業腳本工程和創建PDF。

有關如何解決此問題的任何想法?或者更好的方式來運行一個流程隊列?

+1

請出示一些代碼 –

回答

7

試試這個:

shell_exec("nohup /usr/bin/htmldoc -t pdf --webpage test.html > test.pdf 2>&1 &");