如何在WAMP等本地服务器上测试cron作业?
Windows系统没有Cron(它是Linux系统的主要任务调度程序),相应的Windows版本是Task Scheduler。这个问题建议使用at命令。
因此,由于Cron与Apache、Mysql、PHP的设置无关,我认为在Windows系统中不可能可靠地测试您为Linux Cron创建的cronjobs(也许可以使用Cygwin)。
您可以创建一个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>
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,否则它将永远不会停止。安装cron(是的,Windows也可以使用)。
虽然如此,我不想在Windows上这样做。您最好获取VirtualBox的副本,并创建更符合您的生产环境的东西来进行开发。
您可以直接从URL运行脚本,这意味着如果您想从cron设置运行cron_test.php脚本并测试相同结果,则可以直接从本地主机运行此文件,例如http://localhost/XXXX/cron_test.php。
-f c:\wamp\www\foo\foo.php
只需从命令行运行作业。你要测试的是作业,而不是cron本身。如果需要定期执行以模拟cron,则使用Windows的“计划任务”功能。
试试这个命令
<?php
echo exec('0 13 * * * D:\wamp\bin\php -f D:\wamp\www\be.php');
?>
<meta http-equiv="refresh" content="0; url=http://localhost/myproject/cron.php" />
立即设置一个 meta 刷新: content = 0 每 5 秒刷新一次: content = 5
0 * * * * wget http://example.org/cron.php
如果是这种情况,您只需要手动触发cron php文件以模拟行为即可。
schtasks
,at
已经被弃用了几年,因为它只代表任务计划程序中较旧版本中存在的功能。 - Joey