2013-07-30 41 views
0

我之前在這裏看到過這個問題,所以我很抱歉重複,但我仍然沒有找到我的問題的答案。php頁面啓動bash腳本在後臺運行而不是超時

我有一個bash腳本需要一段時間才能運行。它需要傳遞用戶在網頁上設置的變量(不要擔心會有大量的安全驗證等)

我可以得到bash文件啓動,但它在20秒後死亡也許從運行時該網頁。

當從終端運行..運行非常好。

好了,所以我有以下幾點:

$bashFile = shell_exec('./CoinCreationBashFile.sh "'.$coinName.'" "'.$coinNameAbreviation.'" "'.$blockReward.'" "'.$blockSpacing.'" "'.$targetTimespan.'" "'.$totalCoins.'" "'.$firstBitAddy.'" "'.$seedNode.'" "'.$seedName.'" "'.$headline.'" '); 

現在這個執行bash的文件,但我讀了關於Shell_exec php with nohup,並提出了以下幾點:

$bashFile = shell_exec('nohup ./CoinCreationBashFile.sh "'.$coinName.'" "'.$coinNameAbreviation.'" "'.$blockReward.'" "'.$blockSpacing.'" "'.$targetTimespan.'" "'.$totalCoins.'" "'.$firstBitAddy.'" "'.$seedNode.'" "'.$seedName.'" "'.$headline.'" >/dev/null 2>&1 &'); 

但這之後仍然死短時間:(

因此,閱讀關於set_time_limit和max_execution_time並將它們設置爲像php.ini文件中的10000000 ....仍然沒有快樂:(

只是想運行一個bash腳本而沒有它超時和退出。不是真的想要在那裏做一箇中間步驟,但有人建議我看看ZeroMQ「讓工人脫離流程」,所以我可能不得不走這條路。

提前

回答

1

千恩萬謝不要試圖通過瀏覽器runging腳本,如果他們採取更多然後在60秒,而不是試圖用SSH或作爲一個cronjob運行此。

+0

我可以將變量傳遞給cronjob從PHP頁面?這是沒有用的... http://stackoverflow.com/questions/4918982/what-is-the-code-to-call-a-cron-job-from-php任何答案? – Fuzzybear

+0

無法執行cron任務,因爲我不想定期運行它...需要根據請求運行 – Fuzzybear

+0

對於在此場景中遇到的任何其他人,我的解決方法是讓php頁面將必要的變量寫入一個通常爲空的目錄中的一個小的.txt文件。然後設置一個cron作業來檢查這個目錄是否包含一個文件。提取變量並以root身份從cron作業運行腳本。一旦想出來真的沒有太多的工作。非常感謝Ethan的建議 – Fuzzybear