在 Windows 中使用 php 设置 cron 作业
Posted
技术标签:
【中文标题】在 Windows 中使用 php 设置 cron 作业【英文标题】:Use php to set cron jobs in Windows 【发布时间】:2012-04-11 07:05:08 【问题描述】:我正在寻找一种使用 php 设置 cron 作业的方法。我想做的就是在特定时间运行一个 PHP 脚本。用户首先在脚本中输入一个时间,服务器根据指定的时间运行脚本。我正在使用 Windows 7 和 xampp。
我发现的是:
创建一个调用 cron.php 文件的 php 文件:使用记事本(或其他),将以下内容粘贴到新文件中: $data = file(“http://pearl.supplychain.com/cron.php”); 你需要把它放在普通的 php 标签中,用“小于号”吗? php 在前面,而 ?最后是“大于符号”。 (我似乎不能直接输入,因为它是“可疑内容”,而 drupal 不允许这样做) 将其另存为 executecron.php,与 cron.php (htdocs) 位于同一目录中。
设置一个定期调用它的计划任务:
-
打开开始-所有程序-附件-系统工具-计划任务。
双击计划任务。
设置从上午 12:00 开始的每日任务,每隔半小时(或其他时间)运行一次,直到晚上 11:59。告诉任务“运行”以下内容:
C:\cms\xampp\php\php.exe c:\cms\xampp\htdocs\executecron.php
(在本系统中,php.exe 安装在 C:\cms\xampp\php,但您可能需要更改路径)。
如您所见,要做到这一点,必须Open Start–All Programs–Accessories–System tools–Scheduled tasks.
是否可以通过 php 代码或使用其他方式来执行此操作?因为我希望在 php / 服务器上完成所有工作,而不是需要我的用户自己配置 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
调度批处理文件运行
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.
我可以使用 php 创建一个浴缸文件,但是,有什么方法可以Paste the following "schtasks /create /sc minute /mo 20 /tn "PHP Cron Job" /tr C:\cron.bat
使用 php 而不是使用 os?谢谢你
谢谢
【问题讨论】:
感谢编辑,我只是想要什么,使用php设置时间,使用php调整服务器,服务器将运行cron作业,正如我在许多主机网页中看到的那样,它们也只提供供用户输入时间的 php,我认为他们不会手动添加 cron 作业?谢谢 uhh,取决于您的托管位置,但通常对我来说最简单的方法是使用 wget 命令进入并设置 cron。或者,如果您有托管的 cron 选项卡,请执行此操作。 请参阅 Microsoft TechNet 库中的 Task Scheduler - Schedule a Task - Using a command line。 其实我并没有使用任何主机,只使用了 xampp 服务器和 localhost 来实现我的工作,那么有没有办法做到这一点? 感谢链接,我已经快速阅读了,看来我只使用php没有办法做到这一点? 【参考方案1】:我在 waytocode.com 上找到了我对这个问题的答案
他们提供了 3 种可能的解决方案来在 Windows 上运行 cron 作业:
Solution-1使用任务调度器
在您的 Windows 7/windows 2005/2008 中。
转到开始菜单->所有程序->附件->系统工具->任务计划程序->创建任务
在新窗口中:
常规(给出任务名称,为了进行测试,您可以选择“用户登录时运行”)
触发(可以选择运行间隔为“每天、每周、每月”。)
操作(这是最重要的部分。选择 Mozilla firefox 作为“程序/脚本”,并在参数中提供使用 Mozilla firefox 触发的 URL)。
Solution-2 使用 XAMPP 服务器中的任务调度程序和 PHP
在 Windows Xp 中,无需复制或安装任何东西(PHP 已经像 XAMPP 一样安装在服务器上)
转到任务调度程序
创建一个任务给定运行时间,然后在高级设置选项中的“RUN”命令文本框中输入
C:\xampp\php\php.exe -f c:/xampp/htdocs/waytocode/mycron.php
在 Windows 7/服务器 2005/2008 中
无需复制或安装任何东西(服务器上已经安装了PHP)
在触发器设置中创建一个任务给运行时间。然后在“程序/脚本”命令文本框类型中的动作设置选项中
C:\xampp\php\php.exe
并在“添加参数(可选)”类型中
-f c:/xampp/htdocs/mycron.php
解决方案–3安装一个 Windows exe 文件,该文件将模拟 *nix 系统中的 cron 作业
我不喜欢在我的服务器或开发机器上安装任何 exe 文件, 但我会在他们发布时提供解决方案:
在 Windows Xp 中,用 wget.exe 将所有 2 个 DLL 文件复制到 C:\windows 文件夹
创建任务给定运行时间,然后在“RUN”命令文本框类型中的高级设置选项中
C:\Windows\wget.exe -q -O NUL http://localhost/mycron.php
在 Windows 7/server 2005/2008 中,将 wget.exe 的所有 2 个 DLL 文件复制到 C:\windows 文件夹中
创建任务给定运行时间,然后在“程序/脚本”命令文本框类型中的高级设置选项中
C:\Windows\wget.exe
并在“添加参数(可选)”类型中
-q -O NUL http://localhost/mycron.php
Solution-4 使用 .bat 文件和任务调度程序
我在 *** 上找到它,它与前 2 个类似:
创建一个cron.php文件(要定期执行的代码)
创建一个 CRON.BAT 文件,复制并粘贴文件中的以下代码
D:\xampp\php\php.exe D:\xampp\htdocs\Application\cron.php
我写的路径是根据我的xampp和cron.php文件,根据你的系统目录更新文件路径
-
计划任务
点击开始 > 所有程序 > 附件 > 系统工具 > 计划任务
或者你可以直接去 控制面板 > 计划任务
右键单击文件夹 新建 > 计划任务
为任务指定适当的名称。 在 RUN 文本字段中... 键入 CRON.BAT 文件的完整路径 在我的情况下是
D:\xampp\htdocs\Application\CRON.BAT
设置作业的时间表,如果需要,您可以使用高级按钮。
解决方案 5
我也不喜欢它,因为一个脚本不能依赖于其他网站,但无论如何它是一种解决方案。
使用外部在线 cron 作业服务。
https://www.google.ca/search?q=cron+job+online+service
选择一种更适合您的解决方案。希望这会对某人有所帮助。
更新
Solution-6(基于以下答案,也可与 CodeIgniter 一起使用!)
创建cron.bat文件并编写以下命令并保存。
@ECHO OFF
c:
cd C:\Program Files\Internet Explorer
START iexplore.exe http://localhost/path/to/cron/job/1
在触发器设置中创建一个任务给运行时间。然后在“程序/脚本”命令文本框类型中的动作设置选项中
C:\xampp\path\htdocs\folder\includes\cron.bat
结束更新
回答你的问题:
是否可以通过 php 代码或使用其他方式来执行此操作?因为我 希望所有工作都在 php / server 上完成,而不是需要我的用户配置 cron作业本身。这意味着我希望我的 php 代码可以设置 cron 在 server 和 server 中会看 cron 吗?
还有其他方法可以做到这一点:
在 PHP 中使用 cron 管理器 Using cron manager from within PHP
使用 PHP 管理 Cron 作业 http://code.tutsplus.com/tutorials/managing-cron-jobs-with-php-2--net-19428
不幸的是,所有使用 PHP 的解决方案都需要 *nix 服务器类型和/或 cPanel,并且实施起来或多或少复杂。
【讨论】:
本地主机上的任务计划就像魅力一样!这就是我在 localhost 上运行的网络应用程序所需要的。谢谢你.. @MoxetKhan 能否分享一下您在 localhost 中的设置方式, @Rathinam 选择上面的一种解决方案并按照步骤操作。解决方案 4 是最好的。 technet.microsoft.com/en-us/library/cc766428(v=ws.11).aspx @AdrianP。可以使用 wamp 是的,可以使用 WAMP 和 XAMPP。如果您遇到任何问题,请尝试解决方案 4,请在此处提及..【参考方案2】:好的,如果我理解正确,您希望在系统上创建一个 cron 作业,而无需用户创建任务。
基本上,这可以在 .bat 文件中轻松完成(甚至可以从 php 调用)。 schtasks 应用程序可以轻松地自动创建计划任务。例如:
schtasks /create /tn UNO /tr YOURAPP.EXE /sc HOURLY /mo 2
请参阅official MS support page 了解有关此漂亮应用程序的更多信息。
另一个对用户来说更容易的选项是使用安装程序。我自己并没有创建那么多 Windows 应用程序,但我确实很高兴与 NSIS 一起玩,而且这个应用程序还具有创建计划任务的选项,以及许多其他功能,这里不胜枚举。如果您需要用户可安装的软件包,强烈推荐。
希望对您有所帮助,祝您编程愉快。
【讨论】:
是的,这就是我想要做的,我有一个 sendmail.php,并且用户输入日期,服务器将在那个日期运行 sendmail.php。我想知道的是用户提交日期后的工作流程,主机端必须在os中手动添加用户作业请求? 您的 cron 脚本将每天检查一次并选择 db_message date >= 今天日期的所有消息,然后遍历结果集并发送消息。另一个小细节,我建议您在消息表中使用boolean field
作为“标志”,指示消息是否已发送。这样,您可以选择所有未发送的消息,其中 messageDate >= currentDate,您肯定不会对任何人进行邮件炸弹攻击,发送消息时您将标志设置为 1。如果您有任何问题,请随时给我发消息。
@stefgosselin,NSIS 是做什么的?
@Pacerier - 它在应用程序中编写安装程序,它打包一个可执行文件以在 Windows 上安装应用程序。应用程序 (NSI) 具有自动创建计划任务的功能,当然任务计划程序可以手动配置为每隔“x”时间运行“x”应用程序,但使用 NSI,您可以轻松复制相同的规则并拥有能够在任何机器上运行生成的 .exe 并自动创建计划任务的好处。
@Pacerier - 是的。它自动创建计划任务。作为奖励,卸载程序会删除预定的品尝。例如,我之前使用 NSI(轻松)创建了一个安装 cleansweep、磁盘碎片整理程序并为两者创建计划任务的包。【参考方案3】:
另一个很棒的工具是在 Windows 上免费提供的,nncron。它使用与 unix 的 cron 完全相同的语法:
http://www.nncron.ru/
我发现管理这个可怕的 schtask 更容易:)
精简版是我建议使用的版本。完整版支持在配置文件中编写脚本。对于正常的 cron 作业,它可能很方便,但不知何故被杀死了。
【讨论】:
这个怎么用?我无法获得任何文件。【参考方案4】:在 Windows 中创建 Cron 的步骤:
第一步>创建.bat文件
1. open notepad.
2. click File -> Save As.
3.Give the file a name i.e. MyBatchFile.bat Underneath the filename box change the file type to All Files. The .bat on the end of the filename will instruct the PC to open it as a batch file.
步骤 2> 在 MyBatchFile.bat 中写入以下命令
ECHO OFF
START File Full Path write here like http://www.google.com
步骤 3> 打开开始——所有程序——附件——系统工具——计划任务。 单击右侧栏中的创建任务。 姓名:任何一个 触发器:从下拉菜单中设置时间并选择每天 行动:选择.bat文件 点击确定按钮
【讨论】:
【参考方案5】:在 Windows 操作系统中创建 Cron 的步骤:
第一步> 创建.bat文件
1. Open notepad.
2. Click File -> Save As.
3. Give the file a name i.e. MyBatchFile.bat Underneath the filename box change the file type to All Files. The .bat on the end of the filename will instruct the PC to open it as a batch file.
步骤 2> 在 MyBatchFile.bat 中写入以下命令
ECHO OFF
START File Full Path write here like http://www.google.com
第 3 步> 打开开始——所有程序——附件——系统工具——计划任务。 单击右侧栏中的创建任务。 姓名:任何一个 触发器:从下拉菜单中设置时间并选择每天 行动:选择.bat文件 点击确定按钮
【讨论】:
【参考方案6】:另一种非常简单的方法是 powershell,用于获取 php 文件的内容。
任务调度器,目标:Powershell.exe
,使用参数:
-Command "(New-Object Net.WebClient).DownloadString('http://myhost/cron/cron.php')"
(Ups,旧帖子)
【讨论】:
【参考方案7】:这是我为自己的 windows 10 项目尝试的完整解决方案。
1) 进入“开始”菜单并搜索“task scheduler”并打开它。
如果您遇到任何权限问题,请将其打开为“以系统管理员身份运行”。此选项正好在“打开”下方。
您仍然面临权限问题,请联系您的系统管理员。
2) 点击右侧边栏中的“新任务”,会打开一个窗口。
3) 在此窗口中,默认选择“general”标签。给任务起一个合适的名称,如果需要,提供简短的描述。
4) 转到“triggers”,在此处设置您想要运行它的频率并启动日期时间,如果要求过期日期时间。并设置所有要求参数。
5) 转到“操作”标签。这是最重要的部分。
在“Program/script”中,写入“php.exe”的绝对路径。
在“Start in”中,写下你想要的cron php文件所在文件夹的绝对路径。
在“Add arguments”中,写下你想运行的 php 文件名。
在“添加参数”中,您还可以指定参数到 php 文件名后分隔的文件空间。如果它有文本或特殊字符,用双引号括起来。
如果您向脚本提供参数,您将分别在 $argv[1]、$argv[2] 等中收到它们。
更多详情请访问:https://medium.com/@shraddha_kulkarni/run-php-cron-in-windows-513fb1aa53a5
【讨论】:
以上是关于在 Windows 中使用 php 设置 cron 作业的主要内容,如果未能解决你的问题,请参考以下文章
在 PHP 脚本上运行 Cron 作业,在 Windows 的本地主机上
弹性beantalk使用cron.yaml设置php crontab