2017-02-06 18 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

相关问题