在 Windows 服务器上运行“cron”作业 [重复]
Posted
技术标签:
【中文标题】在 Windows 服务器上运行“cron”作业 [重复]【英文标题】:Running "cron" job on Windows server [duplicate] 【发布时间】:2011-09-03 13:34:31 【问题描述】:可能重复:What is the Windows version of cron?
大家好,
我在 IIS 服务器上有一个 script.php,我想每隔 x 分钟自动调用一次该脚本。问题是我需要像在浏览器 (script.php?task=aaa) 中那样将参数传递给脚本。计划任务似乎忽略了参数 ?task=aaa...
如何运行这个脚本并传递一些“GET”参数?
谢谢, 升
【问题讨论】:
不可能是重复的。完全不同的问题.. 在windows中一个cron作业被称为计划任务,你可以在控制面板中找到它。 这绝对是一个不同的问题,因为我在发布之前阅读了该答案以及更多内容,但我没有找到关于传递参数的答案。和往常一样,我唯一能说的是:哦,好吧 【参考方案1】:我在 Windows 2003 服务器上有两次这样的 cron 作业。我用我可以工作的 url 编写了 iexplorer 的 schelude 任务。
例如:
“C:\ProgramFiles\Internet Explorer\iexplore.exe”http://mydomain.com/admin/index.php?action=central_alertas.php&act=1
【讨论】:
如果他没有运行 httpd 怎么办? 如果该人正在使用 php 编写脚本,这是一个公平的建议。 我只是好奇:运行脚本后 IE 应该如何退出?或者他们也应该有另一个任务来关闭它? 嗨,mavrosxristoforos!是的,您可以安排另一个任务,例如“taskkill /F /IM iexplore.exe /T”。【参考方案2】:您可以通过像这样调用它来将参数传递到文件中:
C:\PHP5\php.exe -f "C:\PHP Scripts\script.php" -- -arg1 -arg2 -arg3
然后你就可以用这个函数解析argv了:
function arguments($args )
$ret = array(
'exec' => '',
'options' => array(),
'flags' => array(),
'arguments' => array(),
);
$ret['exec'] = array_shift( $args );
while (($arg = array_shift($args)) != NULL)
// Is it a option? (prefixed with --)
if ( substr($arg, 0, 2) === '--' )
$option = substr($arg, 2);
// is it the syntax '--option=argument'?
if (strpos($option,'=') !== FALSE)
array_push( $ret['options'], explode('=', $option, 2) );
else
array_push( $ret['options'], $option );
continue;
// Is it a flag or a serial of flags? (prefixed with -)
if ( substr( $arg, 0, 1 ) === '-' )
for ($i = 1; isset($arg[$i]) ; $i++)
$ret['flags'][] = $arg[$i];
continue;
// finally, it is not option, nor flag
$ret['arguments'][] = $arg;
continue;
return $ret;
//function arguments
来源:http://php.net/manual/en/features.commandline.php
【讨论】:
【参考方案3】:我建议下载cURL for Windows,因为它可以为您向您的服务器发出页面请求。然后可以使用Windows Task Scheduler 执行curl script.php?task=aaa
。
【讨论】:
以上是关于在 Windows 服务器上运行“cron”作业 [重复]的主要内容,如果未能解决你的问题,请参考以下文章