2011-05-31 23 views
0

我試圖構建一個應用程序,該應用程序檢索連續的xml數據流,並持續每秒更改一次,然後將其解碼並將其插入到mysql數據庫中。所以這個腳本可能必須在服務器上執行而沒有任何gui。但是從客戶端(從瀏覽器內),用戶應該能夠啓動或停止轉儲過程。檢索連續的XML數據流,解碼並將其放入數據庫

這是腳本必須基本上執行此操作。

while($dump == true) 
    { 
    $fetchxml = "http://agent.getstream.org/sample?from=$seq"; 
    $seq = $fetchxml["nextsequence"]; 
    $somedata = $fetchxml["sumdata"]; 
    mysqlinsert_db; 
    } 

使來自瀏覽器,如果我在服務器端點擊一個按鈕,我應該能夠andchange $轉儲收到它取決於閹啓動或停止true或false被按下。

這可能嗎?技術沒有限制。事實上我會很高興,如果有人可以告訴我什麼技術,我應該在後端使用這樣的要求,因爲前端顯然是在JavaScript中。

回答

0

您希望在服務器上的進程停止,並從一個不同的進程重新啓動。

告訴持續進程暫停的一種方法是使用鎖定文件。

while (true) { 
    if (file_exists('continue.tmp')) { 
     // Do whatever is done 
    } else { 
    // do nothing for a minute 
    sleep(60); 
    } 
} 

其他進程只是丟棄continue.tmp停止處理並創建它以恢復。

更好的選擇是在文件被丟棄時退出循環,並使用服務器的任何方法重新啓動進程 - 但如何做到這一點取決於所使用的服務器。但是,通過在重新啓動時重新創建鎖定文件,您可以立即知道它已啓動或不啓動。

0

考慮到這個腳本將在CLI中運行,你有2種方法來控制它。我會告訴你我會用什麼。

while(true) { 
    //> do your operations 
    include('control.php'); 
} 

當你想停止它,你只需要提出一個exit;control.php
如果需要進一步控制,當然可以注入任何變量/對象。

爲了什麼關於retrive部分,你可以簡單地使用file_get_contentssimpleXML類來處理數據

+0

我將如何注入退出;在運行時動態地在control.php中?說我點擊瀏覽器中的一個按鈕? – swordfish 2011-05-31 16:49:09

+0

你可以簡單地手動編輯文件control.php。或者如果你想用一個按鈕來做,你只需要執行'file_put_contents('control.php','<?php exit;?>');'但是我們在這裏真正的基礎水平 – dynamic 2011-05-31 16:51:28

相關問題