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

作为windows服务不断运行PHP脚本,php,windows,service,Php,Windows,Service,我有一个PHP脚本,它轮询数据库,检查新条目,如果发现新条目,则向iOS设备发送推送通知 我目前已经设置了php脚本,因此如果您不断刷新页面,它会执行我想要的操作。我也可以设置一个php或javascript刷新,只打开页面,但如果我使用远程服务器,并且无法判断哪些程序处于打开状态或何时重新启动,那么这将不会非常有效 我认为windows服务将是解决我的问题的最佳解决方案,但我不确定如何将php脚本编译成windows服务 有人有什么建议吗?最糟糕的情况是,我想我可以用C语言编写所有的东西,然后

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

我目前已经设置了php脚本,因此如果您不断刷新页面,它会执行我想要的操作。我也可以设置一个php或javascript刷新,只打开页面,但如果我使用远程服务器,并且无法判断哪些程序处于打开状态或何时重新启动,那么这将不会非常有效

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


有人有什么建议吗?最糟糕的情况是,我想我可以用C语言编写所有的东西,然后用C语言制作一个windows服务,但我确信有一个更简单的方法。

尝试使用windows任务调度器。它不像unix系统上的cron那样强大,但它会帮助您。在这里你可以找到更多关于它的信息


如果您有(想要)从web访问脚本的权限,可以将Windows任务计划程序与wget一起使用,例如,使用下一个路径创建新任务:wget.exe-O--q-t 1。当然,您必须将wget安装到本地服务器。

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

C:\PHP\php.exe C:\pathtophp\file.php
在窗户里

您可以使用nssm.exe(非吸吮式服务管理器)。在这里下载

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

<?php

/// script.php

while(true){
   //do some stuff here

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

?>

然后在控制台中,输入以下命令

nssm.exe install <service-name>
nssm.exe安装
之后,在Nssm服务安装程序中

  • 在路径字段中,写入
    php.exe的路径
  • 在启动目录中,写下php脚本或工作目录的位置
  • 最后,在arguments字段中,编写
    script.php
  • 然后单击“安装服务”按钮。
    您现在可以在
    windows服务中检查您的服务

    ,但任务计划程序多久运行一次此任务?我希望它能够每秒至少运行两次。这取决于您的操作系统版本。您可以创建测试触发器并查看任务重复的最小时间间隔。如果重复时间不够,你可以创建两个或多个触发器。为什么没有任何响应就被否决了?