2013-11-23 52 views
0

編輯
上運行的exec()/了shell_exec(),我想在後臺運行一個PHP文件,而無需使用這些功能的一個成功。
這不是在backgorund中執行的文件(真正的將發送電子郵件),我使用此方法找出哪個命令參數是正確的文件
文件權限0644;文件夾的權限:0755
tets.php:不能1&1服務器

<html> 
    <head> 
    </head> 
    <body> 
     <pre> 
     <?php 
      $ex='php5 -f /homepages/23/d293813614/htdocs/amazonmobilewebsites/extendedcomingsoon/admin/run.php'; 
      exec($ex,$return); 
      echo print_r($return,true); 
     ?> 
     </pre> 
    </body> 
</html> 

run.php(作品從網址):

<html> 
    <head> 
    </head> 
    <body> 
     <pre> 
     <?php 
      $fp = fopen('/homepages/23/d293813614/htdocs/amazonmobilewebsites/extendedcomingsoon/admin/data.txt', 'w+'); 
      fwrite($fp, '1'); 
      fclose($fp); 
      echo 'printed'; 
     ?> 
     </pre> 
    </body> 
</html> 

這些都是我的嘗試:

$ex='php5 -f /homepages/23/d293813614/htdocs/amazonmobilewebsites/extendedcomingsoon/admin/run.php'; 

$ex='php -f /homepages/23/d293813614/htdocs/amazonmobilewebsites/extendedcomingsoon/admin/run.php'; 

$ex='/usr/lib/php6 -f /homepages/23/d293813614/htdocs/amazonmobilewebsites/extendedcomingsoon/admin/run.php'; 

Fisrt->

Array 
    [89] =>  [79] =>  [69] =>  [59] =>  [49] =>  [39] =>  [29] =>  [19] =>  [9] => (
    [90] =>  [80] =>  [70] =>  [60] =>  [50] =>  [40] =>  [30] =>  [20] =>  [10] =>  [0] => X-Powered-By: PHP/5.2.17 
    [91] =>  [81] =>  [71] =>  [61] =>  [51] =>  [41] =>  [31] =>  [21] =>  [11] =>  [1] => Content-type: text/html 
    [92] =>  [82] =>  [72] =>  [62] =>  [52] =>  [42] =>  [32] =>  [22] =>  [12] =>  [2] => 
    [93] =>  [83] =>  [73] =>  [63] =>  [53] =>  [43] =>  [33] =>  [23] =>  [13] =>  [3] => 
    [94] =>  [84] =>  [74] =>  [64] =>  [54] =>  [44] =>  [34] =>  [24] =>  [14] =>  [4] => 
    [95] =>  [85] =>  [75] =>  [65] =>  [55] =>  [45] =>  [35] =>  [25] =>  [15] =>  [5] => 
    [96] =>  [86] =>  [76] =>  [66] =>  [56] =>  [46] =>  [36] =>  [26] =>  [16] =>  [6] => 
    [97] =>  [87] =>  [77] =>  [67] =>  [57] =>  [47] =>  [37] =>  [27] =>  [17] =>  [7] =>  

    [98] =>  [88] =>  [78] =>  [68] =>  [58] =>  [48] =>  [38] =>  [28] =>  [18] =>  [8] =>  

    [99] =>  [89] =>  [79] =>  [69] =>  [59] =>  [49] =>  [39] =>  [29] =>  [19] =>  [9] => Warning: exec() [function.exec]: Unable to fork [php5 -f /homepages/23/d293813614/htdocs/amazonmobilewebsites/extendedcomingsoon/admin/run.php] in /homepages/23/d293813614/htdocs/amazonmobilewebsites/extendedcomingsoon/admin/test.php on line 8 

    [100] =>  [90] =>  [80] =>  [70] =>  [60] =>  [50] =>  [40] =>  [30] =>  [20] =>  [10] => Array 
    [101] =>  [91] =>  [81] =>  [71] =>  [61] =>  [51] =>  [41] =>  [31] =>  [21] =>  [11] => (
    [102] =>  [92] =>  [82] =>  [72] =>  [62] =>  [52] =>  [42] =>  [32] =>  [22] =>  [12] =>) 
    [103] =>  [93] =>  [83] =>  [73] =>  [63] =>  [53] =>  [43] =>  [33] =>  [23] =>  [13] =>   


    [104] =>  [94] =>  [84] =>  [74] =>  [64] =>  [54] =>  [44] =>  [34] =>  [24] =>  [14] =>  
    [105] =>  [95] =>  [85] =>  [75] =>  [65] =>  [55] =>  [45] =>  [35] =>  [25] =>  [15] => 
    [106] =>  [96] =>  [86] =>  [76] =>  [66] =>  [56] =>  [46] =>  [36] =>  [26] =>) 

第二個相同的陣列沒有警告,第三個是空陣列

回答

0

它可能已禁用您的主機,但PHP本身不是,所以爲什麼你不只是include該文件?

如果你的PHP是要花費很長的時間來運行,你可以做到以下幾點:

ignore_user_abort(true); 
set_time_limit(0); 

your_long_function(); 

這將意味着你的腳本一直無限期地運行(你可以離開頁),這是一個潛在的危險要做的事。小心不要造成任何無限循環。

ignore_user_abort
set_time_limit

this answer對於一些其他的選擇了。

+0

這不是在backgorund中執行的文件(真正的將發送電子郵件),我使用這種方法來找出哪個命令參數是正確的 – Razorphyn

+0

但它仍然是一個PHP腳本嗎? –

+0

是的,但如果需要發送2000封電子郵件,它將需要很多時間,我必須等待,直到過程結束 – Razorphyn