在 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”作业 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

在 Windows 中使用 php 设置 cron 作业

在 CentOS 7 上使用 cron 作业运行服务

如何在Hasura上创建cron作业?

如何在服务器上的特定小时内每分钟运行一次cron作业

使用 phantomjs 设置 cron 作业

在 Windows 中设置 cron 作业