【问题标题】:Running php script using crontab on Windows wont work在 Windows 上使用 crontab 运行 php 脚本将不起作用
【发布时间】:2011-04-07 06:45:28
【问题描述】:

如果我在浏览器上设置脚本,一切正常。 来自 crontab 的代码

* * * * * c:\xampp\php\php.exe -q c:\xampp\htdocs\abc\sleep.php

PHP 脚本

sleep.php

<?php
require_once( "./sleep2.php");
$abc = new Registration();
$abc->register();   
?>

sleep2.php

<?php
    require_once("./config.php");
    class Registration
    {
        private $spojenie;

        function __construct()
        {
            $this->spojenie = new mysqli(db_host, db_user, db_pass, db_database);
        }

        public function register()
        {
            $insertPlayer = $this->spojenie->query("insert into skuska(nick,           rank) values('shock',12,12)");
            return true;
        }
    }

?>

还有一个问题。如果我打开 php.exe(命令行窗口)并在那里输入一些命令(-h),什么也不会发生。还好吗?

【问题讨论】:

  • 只是好奇,你是如何在 Windows 上运行 crontab 的?
  • 尝试php.exe -i 虽然-h 应该会产生一些东西。你用的是什么版本的PHP?
  • 我有 cron.exe 和 crontab 文件。将代码放入 crontab 文件并完成。我认为,它之所以有效,是因为 php.exe 只是闪烁,但仅此而已。
  • -i in php.exe = 没有。我使用 PHP 版本 5.3.5
  • 如果您获得的是 CLI 而不是 CGI 二进制文件,则不需要 -q

标签: php command-line cron


【解决方案1】:

也许,您的 php.exe 没有使用适当的配置? 试试 c:\xampp\php\php.exe -c C:\path\to\php.ini c:\xampp\htdocs\abc\sleep.php

提示:键入 php.exe --ini 以获取 php 解释器将查看的所有配置文件的列表。

而且我不知道 -q 标志的作用。

php --help | egrep -e '-q'

在我的 Ubuntu 上什么也没产生。

就像 Sarwar Erfan 一样,不知道如何在 Windows 上运行 cronjobs。也许您应该尝试使用 Windows 计划管理器?它支持标志。

【讨论】:

    【解决方案2】:

    不确定它在 Windows 中是如何工作的,但在 Linux 中,cron 从用户的主目录运行任务。因此, sleep.php 的当前工作目录不会是存储此文件的目录。在这种情况下,您必须在脚本中使用绝对路径。我认为 FILEDIR 会帮助你。详情请看这里http://php.net/manual/en/language.constants.predefined.php

    【讨论】:

      【解决方案3】:

      在包含任何内容之前,通过在脚本中调用 chdir(dirname(__FILE__)); 来确保您位于正确的目录中。否则require() 调用可能会失败。

      【讨论】:

        【解决方案4】:

        所以1,我把crontab改成:

        c:\xampp\php\php.exe -c C:\path\to\php.ini c:\xampp\htdocs\abc\sleep.php
        

        2、php.exe --ini

        返回配置文件(php.ini)路径:C:\Windows

        加载的配置文件:C:\xampp\php\php.ini

        扫描其他 .ini 文件(无)

        已解析的其他 .ini 文件(无)

        3、我把require改成include(dirname(__FILE__)."....."

        4,它有效 :D :D :D :D

        5,我正在考虑停止使用 require。

        谢谢大家。你真的帮了我。

        【讨论】:

          猜你喜欢
          • 2011-07-05
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-04-30
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多