【问题标题】:How to test a cron job in Local Server like WAMP?如何在 WAMP 等本地服务器中测试 cron 作业?
【发布时间】:2011-03-15 07:27:36
【问题描述】:

如何在 WAMP 等本地服务器中测试 cron 作业?

【问题讨论】:

    标签: php windows cron wamp


    【解决方案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 SchedulerThis question 推荐使用 at 命令。

    因此 Cron 与 Apache、Mysql、PHP 设置没有任何关系,我认为无法可靠地测试您在 Windows 中为 Linux Cron 创建的 cronjobs(可能使用Cygwin)。

    【讨论】:

    • 旁注:当前使用任务调度程序的程序是schtasksat 已被弃用几年,因为它仅代表旧版本的任务调度程序中存在的功能。
    【解决方案4】:

    只需从命令行运行作业。这是您要测试的工作,而不是 cron 本身。如果您需要让它定期执行以模拟 cron,请使用 Windows“计划任务”工具

    【讨论】:

      【解决方案5】:

      试试这个命令

      <?php
      
      echo exec('0 13 * * * D:\wamp\bin\php -f D:\wamp\www\be.php');
      
      ?>
      

      【讨论】:

        【解决方案6】:

        &lt;meta http-equiv="refresh" content="0; url=http://localhost/myproject/cron.php" /&gt;

        立即设置元引用: 内容 = 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。

            【讨论】:

              猜你喜欢
              • 2011-08-15
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2012-12-20
              • 2013-03-06
              • 1970-01-01
              • 1970-01-01
              • 2013-12-03
              相关资源
              最近更新 更多