使用php在Windows中设置cron作业

Leo*_*han 11 php windows xampp cron

我正在寻找一种使用PHP设置cron作业的方法.我想做的就是在特定时间运行PHP脚本.用户首先在脚本中输入时间,根据服务器运行脚本指定的时间.我正在使用Windows 7和xampp.

我发现的是:

  1. 创建一个调用cron.php文件的php文件:使用notepad(或其他),将以下内容粘贴到一个新文件中:$ data = file("http://pearl.supplychain.com/cron.php"); 你需要把它放在常规的php标签里,"少于标志"吗?php在前面,而且?最后"大于号".(我似乎不能只键入它,因为它是"可疑内容"而drupal不允许它)将它保存为executecron.php,与cron.php(htdocs)保存在同一目录中.

  2. 设置定期调用此任务的计划任务:

    1. 打开开始 - 所有程序 - 附件 - 系统工具 - 计划任务.
    2. 双击计划任务.
    3. 设置每日任务,从凌晨12:00开始,每半小时(或其他)运行一次,直到晚上11:59.告诉任务"运行"以下内容:

      C:\cms\xampp\php\php.exe c:\cms\xampp\htdocs\executecron.php
      
      Run Code Online (Sandbox Code Playgroud)

      (在此系统上,php.exe安装在C:\ cms\xampp\php中,但您可能需要更改路径).

如你所见,要做到这一点,必须这样做 Open Start–All Programs–Accessories–System tools–Scheduled tasks.

可以通过PHP代码或使用其他方式来实现这一点吗?因为我想在php/server上完成所有工作而不需要我的用户自己配置cron作业.这意味着我想要我的PHP代码可以在服务器中设置cron,服务器会查看cron吗?

对stefgosselin:

创建批处理文件

Open Notepad.
Paste the line "C:\xampp\php\php.exe C:\wamp\www\index.php"
Click "File" -> "Save As"
Ensure "Save as type:" is set to "All Files"
Save the file as "cron.bat" to your C drive
Run Code Online (Sandbox Code Playgroud)

安排批处理文件运行

Open Command Prompt
Paste the following "schtasks /create /sc minute /mo 20 /tn "PHP Cron Job" /tr C:\cron.bat"
Press Enter
This will make the script run every 20 minutes, the first time 20 minutes from now.
Run Code Online (Sandbox Code Playgroud)

我能够使用php创建一个浴室文件,但是,有没有办法Paste the following "schtasks /create /sc minute /mo 20 /tn "PHP Cron Job" /tr C:\cron.bat 使用PHP而不是使用操作系统?谢谢

谢谢

Adr*_* P. 37

我在waytocode.com找到了我对这个问题的答案

他们提供了3种可能的解决方案来在Windows上运行cron作业:

解决方案-1使用任务调度程序

在Windows 7/windows 2005/2008中.

转到Startmenu-> All Programs-> Accessories-> System Tools-> Task Scheduler-> create Task

在新窗口中:

  1. 常规(给出任务名称并进行测试,您可以选择"用户登录时运行")

  2. 触发(您可以选择运行间隔为"每日,每周,每月".)

  3. 动作(这是最重要的部分.选择一个Mozilla firefox作为"程序/脚本",并在Argument中提供用Mozilla firefox启动的URL).

解决方案-2使用来自XAMPP服务器的Task调度程序和PHP

在Windows Xp中,无需复制或安装任何内容(已经在服务器上安装了PHP,如XAMPP)

转到任务调度程序

创建一个任务给出运行时间,然后在"运行"命令文本框类型的高级设置选项中

C:\xampp\php\php.exe -f c:/xampp/htdocs/waytocode/mycron.php
Run Code Online (Sandbox Code Playgroud)

在Windows 7/server 2005/2008中

无需复制或安装任何东西(已在服务器上安装PHP)

在"触发器"设置中创建任务给出运行时间.然后在"程序/脚本"命令文本框类型中的"操作"设置选项中

C:\xampp\php\php.exe
Run Code Online (Sandbox Code Playgroud)

并在"添加参数(可选)"类型中

-f c:/xampp/htdocs/mycron.php
Run Code Online (Sandbox Code Playgroud)

解决方案-3安装一个Windows exe文件,该文件将模拟来自*nix系统的cron作业

我不想将任何exe文件安装到我的服务器或开发机器上, 但我会提供他们发布的解决方案:

在Windows XP中,使用wget.exe将所有2个DLL文件复制到C:\ windows文件夹

在"运行"命令文本框类型中创建任务给出运行时间然后在高级设置选项中

C:\Windows\wget.exe -q -O NUL http://localhost/mycron.php
Run Code Online (Sandbox Code Playgroud)

在Windows 7/server 2005/2008中,使用wget.exe将所有2个DLL文件复制到C:\ windows文件夹

在"程序/脚本"命令文本框类型中创建一个任务给出运行时间然后在avanced setting选项中

C:\Windows\wget.exe
Run Code Online (Sandbox Code Playgroud)

并在"添加参数(可选)"类型中

-q -O NUL http://localhost/mycron.php
Run Code Online (Sandbox Code Playgroud)

解决方案-4使用.bat文件和任务调度程序

我在Stackoverflow找到了它,它与前两个类似:

  1. 创建一个cron.php文件(您希望定期执行的代码)

  2. 创建一个CRON.BAT文件,复制并通过文件中的以下代码

    D:\ xampp\php\php.exe D:\ xampp\htdocs\Application\cron.php

我写的路径是根据我的xampp和cron.php文件,根据你的系统目录更新文件的路径

  1. 计划任务单击开始>所有程序>附件>系统工具>计划任务

或者您可以直接进入控制面板>计划任务

右键单击文件夹New> Schedule Task

为任务指定适当的名称.在RUN文本字段中...在我的情况下键入CRON.BAT文件的完整路径

D:\xampp\htdocs\Application\CRON.BAT
Run Code Online (Sandbox Code Playgroud)

设置作业的计划,如果需要,可以使用高级按钮.

解决方案-5

我不喜欢它,因为一个脚本不能依赖别人的网站,但无论如何它都是一个解决方案.

使用外部在线cron作业服务.

https://www.google.ca/search?q=cron+job+online+service

选择一个更适合您的解决方案.希望这会对某人有所帮助.

UPDATE

解决方案-6(基于以下答案,也适用于CodeIgniter!)

创建cron.bat文件并编写以下命令并保存.

@ECHO OFF
c:
cd C:\Program Files\Internet Explorer
START iexplore.exe http://localhost/path/to/cron/job/1
Run Code Online (Sandbox Code Playgroud)

在"触发器"设置中创建任务给出运行时间.然后在"程序/脚本"命令文本框类型中的"操作"设置选项中

C:\xampp\path\htdocs\folder\includes\cron.bat
Run Code Online (Sandbox Code Playgroud)

结束更新

回答你的问题:

可以通过PHP代码或使用其他方式来实现这一点吗?因为我想在php/server上完成所有工作而不需要我的用户自己配置cron作业.这意味着我想要我的PHP代码可以在服务器中设置cron,服务器会查看cron吗?

还有其他方法可以做到这一点:

在PHP中使用cron管理器在PHP中 使用cron管理器

使用PHP管理Cron Jobs http://code.tutsplus.com/tutorials/managing-cron-jobs-with-php-2--net-19428

不幸的是,所有使用PHP的解决方案都需要*nix服务器类型和/或cPanel,并且实现起来或多或少都很复杂.


Ste*_*lin 3

好的,如果我理解正确的话,您希望在系统上创建一个 cron 作业,而无需用户创建该任务。

基本上,这可以在 .bat 文件中轻松完成(甚至可以从 php 调用)。schtasks 应用程序可以轻松自动创建计划任务。例如:

schtasks /create /tn UNO /tr YOURAPP.EXE /sc HOURLY /mo 2
Run Code Online (Sandbox Code Playgroud)

有关这个漂亮应用程序的更多信息,请参阅官方 MS 支持页面。

对于用户来说更容易的另一个选择是使用安装程序。我自己并没有创建那么多 Windows 应用程序,但确实很高兴使用NSIS,并且该应用程序还具有创建计划任务的选项,以及许多其他功能,在此无法一一列举。如果您需要用户可安装的软件包,强烈推荐。

希望对您有帮助,祝编码愉快的朋友。