Запуск PHP-скрипта с использованием crontab в Windows не будет работать - PullRequest
0 голосов
/ 07 апреля 2011

Если я установлю скрипт в браузере, все в порядке. Код из 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 голосов
/ 07 апреля 2011

Итак, 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.

Спасибо всем.Вы действительно помогли мне.

0 голосов
/ 07 апреля 2011

Не уверен, как это работает в Windows, но в Linux cron запускает задачи из homedir пользователя.Таким образом, текущий рабочий каталог для sleep.php не будет каталогом, в котором хранится этот файл.В этом случае вы должны использовать абсолютные пути в ваших скриптах.Я думаю, что FILE или DIR помогут вам.Смотрите здесь http://php.net/manual/en/language.constants.predefined.php для деталей

0 голосов
/ 07 апреля 2011

Убедитесь, что вы находитесь в правильном каталоге, вызвав chdir(dirname(__FILE__)); в своем скрипте, прежде чем включать что-либо. В противном случае вызов require() может завершиться ошибкой.

0 голосов
/ 07 апреля 2011

Может быть, ваш php.exe не использует соответствующую конфигурацию?Попробуйте c: \ xampp \ php \ php.exe -c C: \ путь \ к \ php.ini c: \ xampp \ htdocs \ abc \ sleep.php

Совет: введите php.exe --iniчтобы получить список всех файлов конфигурации, с которыми будет работать ваш интерпретатор php.

И я понятия не имею, что делает флаг -q.

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

ничего не производит на моем Ubuntu.

И точно так же, как Сарвар Эрфан , понятия не имею, как вы запускаете cronjobs в Windows.Может быть, вам стоит попробовать диспетчер расписаний Windows?Поддерживаются флаги.

...