2011-04-07 126 views
0

如果我在瀏覽器上設置腳本,一切正常。從crontab中 代碼在Windows上使用crontab運行php腳本不會工作

* * * * * 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),則什麼都不會發生。可以嗎?

+2

只是好奇,你如何在Windows上運行crontab? – 2011-04-07 06:48:11

+0

嘗試'php.exe -i'雖然'-h'應該會產生一些東西。你使用的是什麼版本的PHP? – Phil 2011-04-07 06:49:44

+0

我有cron.exe和crontab文件。將代碼放入crontab文件並完成。我認爲,它的工作原理是因爲在php.exe只是閃爍的時候,但那都是。 – 2011-04-07 06:54:30

回答

0

也許,你的php.exe沒有使用合適的配置? 嘗試c:\ xampp \ php \ php.exe -c C:\ path \ to \ php.ini c:\ xampp \ htdocs \ abc \ sleep.php

提示:輸入php.exe --ini to獲取您的php解釋器將查看的所有配置文件的列表。

而我不知道什麼-q標誌。

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

在我的Ubuntu上沒有任何東西。

就像Sarwar Erfan,不知道如何在Windows上運行cronjobs。也許你應該嘗試Windows Schedule Manager呢?它支持標誌。

0

不知道它是如何在Windows中工作的,但是在Linux中,cron運行用戶homedir中的任務。因此,sleep.php的當前工作目錄不會是存儲該文件的目錄。在這種情況下,您必須在腳本中使用絕對路徑。我認爲FILEDIR將幫助你。在此處查看http://php.net/manual/en/language.constants.predefined.php以獲取詳細信息

0

在包含任何內容之前,請通過在腳本中調用chdir(dirname(__FILE__));來確保您位於正確的目錄中。否則,require()調用可能會失敗。

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,進出口使用需要思考停止。

感謝所有。你真的幫助了我。