2017-02-06 19 views
-4

這裏是我想要做的: 我想用一個doSomething()函數在Web服務器上運行一個類似於可執行文件的應用程序。在Web應用程序啓動時,doSomething()函數通過Web套接字作爲客戶端連接到另一個MQTT服務器,在那裏訂閱並將傳入消息存儲到數據庫。我不關心doSomethihg()函數的內容。我可以做這個。我只對在Web服務器上製作一個deamon應用感興趣。 此應用程序將運行在glassfish(java)或apache(php)中。 我將在openshift中部署此應用程序o另一個類似的PAAS,所以它必須是一個Web應用程序,不是一個獨立的應用程序。另外,我想我沒有執行shell腳本的能力。 我只找到一種方法來做到這一點與java;創建一個servlet並將其配置爲在應用程序啓動時運行(在web.xml文件中使用load-on-startup)。我不知道這是否是最有效的,我沒有找到任何的PHP。 在此先感謝!如何在網絡應用程序啓動時在openshift中加載函數

+1

歡迎來到StackOverflow! **你的問題究竟是什麼**? PHP是否存在可以創建守護進程的服務?如果是這樣,一個簡單的谷歌搜索將顯示網站,如https://daemon.io/。如果不是,請更新您的問題,以便在[最小,完整和可驗證的示例](http://stackoverflow.com/help/mcve)中顯示所有相關代碼。另外請務必讓我們知道您迄今爲止已經嘗試解決您的問題。有關詳細信息,請參閱[幫助文章](http://stackoverflow.com/help/how-to-ask),瞭解如何提出良好問題。 –

+0

我想要做的是在Web服務器,apache或glassfish上運行應用程序,而無需用戶交互。該應用程序將部署在openshift上。我沒有做任何事情來解決問題,因爲這不是問題。 – Vassis

回答

0

PHP本身並沒有'應用程序啓動',但它聽起來像你可能想a cron job。您可以創建一個cron作業,以便每隔幾分鐘運行一次,並且它將在沒有任何用戶交互的情況下啓動其功能。在cron作業中設置條件標誌可以確保代碼只運行一次。

或者,您可以在訪客加載特定頁面時執行函數。該功能可以設置標誌(作爲$_SESSION變量)來檢查功能是否已經運行:

<?php 

session_start(); 
if(!isset($_SESSION['done'])) { 
    doSomething(); 
} 


function doSomething() { 
    // Do something 
    $_SESSION['done'] = 'yes'; 
} 

?> 

這樣,你可以得到,如果需要的是每個訪客觸發一次的功能。

希望這會有所幫助! :)

+0

謝謝!低調的方式引人入勝。我會檢查這是否由openShift支持並試一試。任何想法的Java/glassfish? – Vassis

相關問題