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


Run PHP script constantly as windows service

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

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

我认为Windows服务

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

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

在 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中检查您的服务

尝试使用 Windows 任务计划程序。它不是那么强大,就像 unix-systems 上的 cron 一样,但它会对你有所帮助。在这里你可以找到更多关于它的信息如何在计划任务中运行 PHP 文件(Windows 任务计划程序)

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

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

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