2015-09-04 549 views
0

我知道我可以使用php運行bash命令,但它超時,我需要它連續運行。所以,我所希望實現的是有這個網站叫我的服務器上我的一個bash文件,而不是實際的PHP腳本開始運行它在PHP用我的本地服務器上的php運行bash腳本

+1

很可能它不是運行到超時的bash腳本,但控制PHP請求。所以你尋找一種解決方法。因此,要麼提高您爲php配置的最大執行時間,要麼使用'nohup'實用程序從控制進程中分離您的bash腳本。見'man nohup'。 – arkascha

+1

使它永遠運行*對網絡請求沒有意義。除非實際需要捕獲腳本輸出,否則只需將其緩存以供稍後執行('batch'或'at')。 「 – mario

+0

」連續運行 – samrap

回答

0

使用此代碼:

<?php 

ini_set('max_execution_time', 0); 

... 

其中0意味着永遠運行/直到腳本結束。或者以秒爲單位設置合理的限制。

0

這是我使用通過PHP運行的bash腳本:

<?php 
    set_time_limit(0); // run for unlimited time 
    ignore_user_abort(1); //runs even if the user closes the browser/shell session 

    $command = $_GET['c']; 
    $pass = $_GET['p']; 

    if($p == "my password" & !EMPTY($command)){ 


     switch ($command){ 
      case "dothis": 
       $command = "sh /path/to/dothis.sh"; 
       break; 
      case "dothat": 
       $command = "sh /path/to/dothat.sh"; 
       break; 
      default: 
       $command = ""; 
       break;  
     } 

     shell_exec("nohup $command &"); 
     // nohup: run a command immune to hangups, with output to a non-tty 

    } 

?> 

例如:http://www.my-site.com/bash.php?c=dothis&p=mypass

您還可以密碼通過apache.htaccess/.htpasswd保護的目錄,然後,您可以使用訪問腳本:

http://user:[email protected]/bash.php?c=dothis&p=mypass

相關問題