我正在寻找一种使用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 / 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
安排批处理文件运行
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而不是使用操作系统?谢谢
谢谢
答案 0 :(得分:37)
我在waytocode.com找到了我对这个问题的答案
他们提供了3种可能的解决方案来在Windows上运行cron作业:
解决方案-1 使用任务计划程序
在Windows 7 / windows 2005/2008中。
转到Startmenu->所有程序 - >附件 - >系统工具 - >任务计划程序 - >创建任务
在新窗口中:
常规(提供任务名称并进行测试,您可以选择“用户登录时运行”)
触发(您可以选择“每日,每周,每月”的运行间隔。)
动作(这是最重要的部分。选择Mozilla firefox作为“程序/脚本”,并在Argument中提供使用Mozilla firefox触发的URL)。
解决方案-2 使用来自XAMPP服务器的任务计划程序和PHP
在Windows Xp中,无需复制或安装任何内容(已在服务器上安装PHP,如XAMPP)
转到任务计划程序
创建任务给出运行时间,然后在“运行”命令文本框中输入高级设置选项
C:\xampp\php\php.exe -f c:/xampp/htdocs/waytocode/mycron.php
在Windows 7 / server 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文件夹
在“运行”命令文本框类型
中创建一个任务给出运行时间然后处于高级设置选项C:\Windows\wget.exe -q -O NUL http://localhost/mycron.php
在Windows 7 / server 2005/2008中,使用wget.exe将所有2个DLL文件复制到C:\ windows文件夹
在“程序/脚本”命令文本框类型
中创建一个任务给出运行时间然后在avanced setting选项中C:\Windows\wget.exe
并在“添加参数(可选)”中输入
-q -O NUL http://localhost/mycron.php
解决方案-4 使用.bat文件和任务计划程序
我在Stackoverflow找到了它,它与前两个类似:
创建一个cron.php文件(您希望定期执行的代码)
创建一个CRON.BAT文件,复制并通过文件
中的以下代码D:\ xampp \ php \ php.exe D:\ xampp \ htdocs \ Application \ cron.php
我写的路径是根据我的xampp和cron.php文件,根据你的系统目录更新文件的路径
或者你可以直接去 控制面板>计划任务
右键单击该文件夹 新>安排任务
为任务指定适当的名称。 在“运行”文本字段中...键入CRON.BAT文件的完整路径 就我而言,它是
D:\xampp\htdocs\Application\CRON.BAT
设置作业的时间表,如果需要,可以使用高级按钮。
<强>解决方案-5 强>
我不喜欢它,因为一个脚本不能依赖别人的网站,但无论如何它都是一个解决方案。
使用外部在线cron作业服务。
https://www.google.ca/search?q=cron+job+online+service
选择一个更适合您的解决方案。希望这会对某人有所帮助。
<强> 更新 强>
解决方案-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
END UPDATE
回答你的问题:
可以通过php代码或使用其他方式来实现吗?因为我 想要在php / server上完成所有工作而不需要我的用户配置 cron工作本身。这意味着我想要我的PHP代码可以设置 服务器和服务器中的cron会查看cron吗?
还有其他方法可以做到这一点:
在PHP中使用cron manager Using cron manager from within PHP
使用PHP管理Cron Jobs http://code.tutsplus.com/tutorials/managing-cron-jobs-with-php-2--net-19428
不幸的是,所有使用PHP的解决方案都需要* nix服务器类型和/或cPanel,并且实现起来或多或少都很复杂。
答案 1 :(得分:2)
好的,如果我理解正确,您希望在系统上创建一个cron作业,而无需用户创建任务。
基本上,这可以很容易地在.bat文件中完成(甚至可以从php调用)。 schtasks应用程序可以轻松地自动创建计划任务。例如:
schtasks /create /tn UNO /tr YOURAPP.EXE /sc HOURLY /mo 2
有关此漂亮应用程序的更多信息,请参阅official MS support page。
对用户来说甚至更容易的另一个选择是使用安装程序。我自己并没有创建那么多Windows应用程序,但确实有幸与NSIS一起玩,而且这个应用程序也有创建预定任务的选项,其中许多其他功能在这里无法命名。如果您需要用户可安装的软件包,强烈建议使用。
希望有帮助,快乐的编码朋友。
答案 2 :(得分:2)
另一个很棒的工具可以在Windows上免费使用,nncron。它使用与unix'cron:
完全相同的语法我觉得更容易管理这个可怕的史诗:)
Lite版本是我建议使用的版本。完整的动力版本支持配置文件中的脚本。它可能很方便但不知何故因为正常的cron工作而被杀死。
答案 3 :(得分:0)
步骤在Windows中创建Cron:
步骤1&gt;创建.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&gt;在MyBatchFile.bat中编写以下命令
ECHO OFF
START File Full Path write here like http://www.google.com
步骤3&gt; 打开开始 - 所有程序 - 附件 - 系统工具 - 计划任务。 单击右侧栏中的创建任务。 名字:任何一个 触发器:从下拉设置时间并选择每天 操作:选择.bat文件 单击“确定”按钮
答案 4 :(得分:0)
另一个非常简单的方法是powershell,用于获取php文件的内容。
任务计划程序,目标:Powershell.exe
,使用参数:
-Command "(New-Object Net.WebClient).DownloadString('http://myhost/cron/cron.php')"
(Ups,老帖子)
答案 5 :(得分:0)
这是我为自己的 windows 10 项目尝试的完整解决方案。
1)转到“ 开始”菜单,然后搜索“ 任务计划程序”。
如果遇到任何权限问题,请以“ 以系统管理员身份运行”打开它。此选项正好在“打开”下方。
仍然仍然遇到权限问题,请与系统管理员联系。
2)单击右侧栏中的“ 新任务”,将打开一个窗口。
3)默认情况下,将在此窗口中选择“ 常规”标签。给任务起一个合适的名称,如果需要,请提供简短描述。
4)转到“ 触发器”(如果需要终止日期时间,请在此处设置要运行的频率并开始日期时间),并设置所有require参数。
5)转到“ 操作”标签。这是最重要的部分。
在“ 程序/脚本”中,编写“ php.exe ”的绝对路径。
在“ 开始于”中,输入您打算用于cron的php文件所在的文件夹的绝对路径。
在“ 添加参数”中,输入要通过任务作业运行的php文件的名称。
在“ 添加参数”中,您还可以为php文件名后面的文件空间指定参数。并且如果有文本或特殊字符,请用双引号将其引起来。
如果为脚本提供参数,则会分别在 $ argv [1],$ argv [2] 等中接收它们。
有关更多详细信息,请访问:https://medium.com/@shraddha_kulkarni/run-php-cron-in-windows-513fb1aa53a5
答案 6 :(得分:-1)
步骤在Windows操作系统中创建Cron:
第1步&gt; 创建.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&gt;在MyBatchFile.bat中编写以下命令
ECHO OFF
START File Full Path write here like http://www.google.com
步骤3&gt; 打开开始 - 所有程序 - 附件 - 系统工具 - 计划任务。 单击右侧栏中的创建任务。 名字:任何一个 触发器:从下拉设置时间并选择每天 操作:选择.bat文件 单击“确定”按钮