在Windows上使用crontab运行php脚本无法正常工作

时间:2011-04-07 06:45:29

标签: php command-line cron

如果我在浏览器上设置脚本,一切正常。 来自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),没有任何反应。可以吗?

4 个答案:

答案 0 :(得分:0)

也许,你的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计划管理器?它支持标志。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

所以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,我将要求更改为include(dirname(__FILE__)."....."

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

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

感谢所有人。你真的帮了我