2012-07-08 2 views
0

我已經寫了一個帶「C」的程序,我想用php來執行它,我嘗試使用函數php_exec,但它不起作用。爲了更具體地解決我的問題,我會告訴你一些細節。這個程序是用來使下載更快,簡而言之,用戶將進入到一個網頁,一個把他們的直接鏈接,然後提交他們的鏈接,從我的服務器有一個直接的鏈接,這裏的問題是,「我怎麼能讓用戶使用它,是否有任何相當於php_exec?「因爲我認爲,php_exec不起作用,如果許多用戶在同一時間發送他們的鏈接,我也想知道,這可能會損害我的服務器? 謝謝!PHP:在後臺多次執行一個程序,一次

回答

3

在這種情況下,您可能不想使用exec,因爲它會一直等到執行完的程序完成後阻止完整的腳本。

PHP Documentation告訴你以下幾點:

注:如果程序開始使用此功能,以便它繼續在後臺運行,該程序的輸出必須重定向到一個文件或另一個輸出流。否則會導致PHP掛起,直到程序執行結束。

但是,您可能希望將鏈接添加到隊列(也許是數據庫),然後每隔一段時間執行一次cron作業,然後下載存儲在隊列中的文件。

另一個類似的問題與excellent answer

1
// Start your 'downloader' 
$handle = popen('/path/to/executable 2>&1', 'r'); 
// While it's generating output, print it to the screen 
while (!feof($handle)){ 
    echo fread($handle, 2096); 
} 
// Close the process handle 
pclose($handle); 

允許多個用戶在同一時間使用它。每個PHP進程將分支它自己的副本/path/to/executable,並且將啓用將後臺進程的輸出刷新到用戶屏幕。