不断运行PHP脚本作为Windows服务

时间:2013-10-26 22:09:19

标签: php windows service

我有一个PHP脚本,用于轮询数据库,检查新条目,如果找到新条目,则向iOS设备发送推送通知。

我目前已经设置了php脚本,所以如果你经常刷新页面,它会做我想要的。我还可以设置一个php或javascript刷新,只打开页面,但如果我正在使用远程服务器并且无法分辨哪些程序是打开的还是重新启动时,这将不会非常有效。

我认为Windows服务是我问题的最佳解决方案,但我不确定如何将php脚本编译成Windows服务。

有人有什么建议吗?最糟糕的情况是,我想我可以用C#编写所有内容并制作一个Windows服务,但我确信这是一种更简单的方法。

3 个答案:

答案 0 :(得分:0)

尝试使用Windows任务计划程序。它不是那么强大,就像unix系统上的cron一样,但它会帮助你。在这里你可以找到更多关于它的信息 How to run a PHP file in a scheduled task (Windows Task Scheduler)

如果您(想要)从Web访问您的脚本,您可以将Windows任务计划程序与wget一起使用,例如使用下一个路径创建新任务:wget.exe -O - -q -t 1 http://www.your-site.com/cron.php 。对于cource,您必须将wget安装到本地服务器。

答案 1 :(得分:0)

我的解决方案是使用FireDaemon程序(AlwaysUp是另一种选择)。 我手动将PHP安装到C:\ PHP并将任务设置为运行

C:\PHP\php.exe C:\pathtophp\file.php

答案 2 :(得分:0)

在Windows中

您可以使用nssm.exe(非吸吮服务管理器)。在这里https://nssm.cc/

下载

首先,创建用于轮询数据库的php脚本:

<?php

/// script.php

while(true){
   //do some stuff here

   sleep(5); //wait for 5 seconds 
}

?>

然后在控制台中输入此命令

nssm.exe install <service-name>

然后,在Nssm服务安装程序中

  1. 在路径字段中,写下您的php.exe的路径
  2. 在启动目录中,输入您的php脚本或工作目录的位置
  3. 最后,在参数字段中输入script.php

然后单击按钮安装服务。 您现在可以在windows service

中检查您的服务