如何在 WAMP 等本地服务器中测试 cron 作业?
Posted
技术标签:
【中文标题】如何在 WAMP 等本地服务器中测试 cron 作业?【英文标题】:How to test a cron job in Local Server like WAMP? 【发布时间】:2011-03-15 07:27:36 【问题描述】:【问题讨论】:
【参考方案1】:你所说的“一个 cron 工作”是什么意思?在很多网站上都有一个特殊的页面,比如“cron.php”,它会定期点击,通常是这样的:
0 * * * * wget http://example.org/cron.php
在这种情况下,您只需要手动点击您的 cron php 文件来模拟行为。
【讨论】:
嗯,我的意思是,cron 工作在做什么?在网站术语中,“cron”通常是“偶尔运行的作业”的同义词,可以通过任务调度程序或手动点击它来实现。如果你真的需要测试 crontab,那就是另一个问题了。 好的,那么如何使用任务调度器在一定的时间间隔内执行一个PHP脚本呢?【参考方案2】:安装cron(是的,它是available for Windows)。
我不会想要在 Windows 上这样做。您最好获取 VirtualBox 的副本并创建更类似于您的生产环境的东西来进行开发。
【讨论】:
我认为这不能回答问题。 wamp 适用于 windows,而 cron 适用于 unix/linux,所以只是告诉他安装 cron 没有任何意义。他可能的意思是建议一些替代 cron for windows @ChetanPaliwal — 许多 UNIX 软件在 Windows 上运行。例如,Cron:cronw.sourceforge.net 是的,但在我看来,只是说install cron
作为答案而不提供任何链接或参考,这不是一个好的回答方式【参考方案3】:
Windows 没有 Cron(它是 Linux 系统的主要任务调度程序)。 Windows 版本是Task Scheduler。 This question 推荐使用 at 命令。
因此 Cron 与 Apache、mysql、PHP 设置没有任何关系,我认为无法可靠地测试您在 Windows 中为 Linux Cron 创建的 cronjobs(可能使用Cygwin)。
【讨论】:
旁注:当前使用任务调度程序的程序是schtasks
,at
已被弃用几年,因为它仅代表旧版本的任务调度程序中存在的功能。
【参考方案4】:
只需从命令行运行作业。这是您要测试的工作,而不是 cron 本身。如果您需要让它定期执行以模拟 cron,请使用 Windows“计划任务”工具
【讨论】:
【参考方案5】:试试这个命令
<?php
echo exec('0 13 * * * D:\wamp\bin\php -f D:\wamp\www\be.php');
?>
【讨论】:
【参考方案6】:<meta http-equiv="refresh" content="0; url=http://localhost/myproject/cron.php" />
立即设置元引用: 内容 = 0 每 5 秒: 内容 = 5
【讨论】:
这是重定向而不是 Cron 作业。 Cron 作业,静默执行。整个概念是能够执行某些任务,而无需用户干预。这将在窗口中打开页面并进行处理。【参考方案7】:你可以直接从 URL 运行你的脚本,这意味着如果你想从 cron 设置运行 cron_test.php 脚本并且你想测试相同的结果,那么你可以直接从 localhost 运行这个文件,比如http://localhost/XXXX/cron_test.php。
【讨论】:
【参考方案8】:您只需一行就可以在 Windows 环境中 cron 执行您的作业。我几乎花了我 5 个小时,所以我想与其他人分享是做一个任务。
在程序中给出php.exe路径,我的安装是c:\wamp\bin\php\php5.3.5\php.exe。 其次,您必须放置要运行的文件绝对路径。参数中的-f c:\wamp\www\foo\foo.php
这样就完成了。无需安装任何东西。
【讨论】:
【参考方案9】:你可以运行这个:
set_time_limit(0);
ignore_user_abort(true);
while (1)
//your code here....
sleep($timetowait);
您可以关闭浏览器,脚本将继续运行
set_time_limit(0);
让您的脚本不受时间限制地运行
sleep($timetowait);
确定执行下一个前要等待的时间
while() 循环
ignore_user_abort(true);
即使浏览器关闭也让脚本继续运行
while(1)
是一个无限循环,所以在你退出 wamp 之前它永远不会停止。
【讨论】:
完善我的投票 - 这是一个 .php 文件,由在浏览器中运行触发。它会完成这项工作,但请记住,它会使一些 Apache 进程继续运行。【参考方案10】:您可以创建一个 html 页面并在浏览器上打开它。 javascript setInterval 函数将调用指定的时间段。
以下是执行此操作的代码。指定您的时间间隔(例如 5000,每 5 秒运行一次)
<html>
<head>
<title>Cron</title>
</head>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<body>
<h1>Cron page</h1>
<script type="text/javascript">
setInterval(function()
$.get('http://localhost/test/test.php', function(data)
console.log(data);
);
, 5000);
</script>
</body>
</html>
注意:为避免 CORS,您应该从同一主机调用 ajax 或允许来自服务器端的 CORS。
【讨论】:
以上是关于如何在 WAMP 等本地服务器中测试 cron 作业?的主要内容,如果未能解决你的问题,请参考以下文章
无法在本地 wamp 服务器上运行我的 Magento 文件进行测试
如何让我的引导程序和 jquery 在 Wamp 虚拟主机中工作?