2014-04-29 23 views
0

我使用php創建了一個服務器。我還創建了一個作爲php服務器控制面板的html頁面。如果我訪問控制面板頁面並且php服務器沒有運行,我想推一個按鈕,創建一個啓動php服務器的新獨立進程。使用javascript執行php進程

這裏是啓動使用終端的PHP服務器(launchserver.php)代碼: #在/ usr/bin中/ PHP -q

<?php 
    error_reporting(E_ALL); 
    require_once 'lib/server.php'; 
    require_once 'lib/client.php'; 

    set_time_limit(0); 

    // Get the local ip address of the host machine (NOTE: Not the loop back address) 
    $command="/sbin/ifconfig eth0 | grep 'inet addr:' | cut -d: -f2 | awk '{ print $1}'"; 
    $ipaddress = exec ($command); 
    $server = new Server($ipaddress, 15000); 
    $server->run(); 
?> 

運行服務器,我只是打開一個終端並執行「php -q launchserver.php」。

但是,我不想使用終端啓動php腳本,我想使用我的新控制面板頁面,在那裏我可以點擊一個按鈕,該按鈕創建一個單獨的進程,執行launchserver.php腳本並站起來服務器,如果我離開控制頁面,服務器不會因爲我不在控制頁面而死亡。

+1

如果PHP服務器尚未運行,您將無法執行PHP文件,而且您肯定無法通過JS或HTML執行任何這些操作。 – Kypros

+0

但是您需要運行PHP腳本才能運行PHP腳本。 –

+0

如果您的服務器未運行,您將無法與之通話。如果您可以配置'xinetd'來執行此操作,或者您正在運行Apache並使用網頁來啓動您的服務器,那麼您可以這樣做。大多數情況下,服務器進程在啓動時啓動。 –

回答

0

我不得不近期做類似的事情(不得不使用HTML按鈕在另一個文件上運行一些php代碼)。

這是我的建議(我是「小字輩」,所以有可能是一個更好/更簡單的解決方案):

更改您的launchserver.php文件,以這樣的:

<?php 
if($_POST) { 
    error_reporting(E_ALL); 
    require_once 'lib/server.php'; 
    require_once 'lib/client.php'; 

    set_time_limit(0); 

    // Get the local ip address of the host machine (NOTE: Not the loop back address) 
    $command="/sbin/ifconfig eth0 | grep 'inet addr:' | cut -d: -f2 | awk '{ print $1}'"; 
    $ipaddress = exec ($command); 
    $server = new Server($ipaddress, 15000); 
    $server->run(); 
    } 
?> 

然後,你需要帶有「onclick」的按鈕。 例如 <button onclick="startMyServer();">Start My Server</button>

然後JS功能:

function startMyServer() { 
    var startServer = 1; 
    $.post("<full url here>/launchserver.php", { 'startServer': startServer }, function(d){ 

    }); 
} 

這會像你送一個形式文件。 $ .post需要JQuery,所以一定要包含它。

所以如果你點擊按鈕,它會發送$ _POST到你的php文件,如果發送了$ _POST,那麼php文件中的代碼就會運行。

我希望這是有幫助的。我使用這個JQuery函數來運行一些php代碼(位於另一個文件上的mysql查詢),它對我來說是完美無瑕的。

既然你提到「我有一個運行php的apache2 httpd web服務器」,它應該爲你做竅門。

+0

我會試一試你的建議,並會回報。謝謝! – David

+0

你有沒有得到它的工作? – MrVentzi

+0

嘿我試過了,但沒有奏效。它確實啓動了服務器並且服務器執行了它的執行,但是它只是死了:( – David