【问题标题】:PHP task scheduling with Windows Task Scheduler使用 Windows 任务计划程序进行 PHP 任务计划
【发布时间】:2015-12-10 16:13:36
【问题描述】:

我有一个 PHP 脚本,它从一个数据库表中获取信息并使用它来构建另一个表。每当我在线访问它时它都会运行,但想法是让它与调度程序一起工作。我试过使用 A 触发器,它不能正常工作,现在我正在尝试 Windows 任务计划程序,但这似乎也没有做任何事情。我使用的.bat文件如下:

C:\path\to\php.exe -f "path to php script"

我已刷新数据库表以检查是否进行了任何更改并且它尚未更新。但是,我确实遇到了这个问题。 https://superuser.com/questions/321215/how-can-i-open-a-url-on-a-schedule-in-the-default-browser 我认为这可能有效,但由于我直接在我们用于此特定站点的机器上运行它,我需要知道在该最佳答案中运行命令是否会在每次任务运行时生成一个新的浏览器窗口。如果是这样,有没有办法在指定的时间段后关闭它?更新脚本大约需要一分钟左右才能完成。

【问题讨论】:

  • 是的,您可以从命令行运行 PHP(我无法理解这么多人必须通过 Web 浏览器运行内部脚本的痴迷)。问题是:它可以在常规命令提示符下工作吗?
  • 没有。该错误表明它无法为不同目录中的文件执行 require_once 语句,即使在脚本本身中指定了路径也是如此。无论如何,我提供的那个链接中的解决方案确实工作,我没有看到任何浏览器窗口打开,所以我可能已经回答了我自己的问题。
  • 好吧,Windows 是一个多用户系统。当您使用给定用户登录桌面时,您看不到其他用户的窗口。这并不意味着这些窗口不存在或不使用系统资源。正如我所说,这是一种复杂的方式来完成原本简单的任务。
  • 我看到这个东西运行时 iexplore.exe*32 进程正在被创建。我知道这不是最佳选择,但有没有办法在 .bat 文件中创建延迟,然后终止进程?

标签: php scheduled-tasks


【解决方案1】:

您实际上甚至不需要创建批处理脚本 - 我会将整个任务存储在任务计划程序中。

将程序/脚本路径指向您的 php.exe,并在参数字段中:

-f C:\path\to\php\script.php

php 脚本的路径不需要用引号引起来。这样就无需创建批处理脚本并将任务调度程序指向该脚本。

脚本本身不会打开浏览器 - 它会在后台静默。

【讨论】:

  • 那个不工作。它不会从命令提示符运行,所以我认为这也行不通。