Логотип   Простое и понятное управление
  Уникальные возможности по настройке
  Open Server скачали уже 1 020 089 раз!

Форум

Добро пожаловать, Гость!

Планировщик. Как правильно.

Обсуждение вопросов на другие темы связанные с веб-разработкой
Anagar
Сообщения: 15
C нами: 1 год 3 мес

Непрочитанное сообщение Anagar » 31 мар 2016, 19:00

Помогите пожалуйста сообразить как правильно писать выполнение задания cron.
Как пишу я:
Время: /1 * * * * (каждую минуту)
Выполнить: %progdir%\modules\php\%phpdriver%\php-win.exe -c %progdir%\userdata\temp\config\php.ini -q -f %sitedir%\redneck\crone.php

Если что open server у меня располагается по адресу: C:\OpenServer
Скрипт который нужно выполнить лежит в: C:\OpenServer\domains\redneck
Содержимое скрипта:
<?php
session_start();
include("db_reg.php");
$e_login = $_SESSION['l_hp'];
$e_password = $_SESSION['p_hp'];
$STH = $DBH->query("SELECT * FROM resours WHERE login='$e_login' AND password='$e_password'");
$STH->setFetchMode(PDO::FETCH_ASSOC);
$rez = $STH->fetch();
$bar = $rez['bar'] + 1;
$STH = $DBH->prepare("UPDATE resours SET bar='".$bar."' WHERE login='$e_login' AND password='$e_password'");
$STH->execute();
?>

Логи:
31 Mar 18:43:20 Start nnCron
31 Mar 18:43:20 Load cron.tab

Сам по себе, с браузера, скрипт работает. Но в кроне нет. Что я делаю не так, подскажите пожалуйста!?

GeekHacker
Сообщения: 94
C нами: 1 год 3 мес

Непрочитанное сообщение GeekHacker » 01 апр 2016, 01:37

*/1 * * * *

GeekHacker
Сообщения: 94
C нами: 1 год 3 мес

Непрочитанное сообщение GeekHacker » 01 апр 2016, 01:42

Правда, лично меня ещё моменты в самом скрипте смущают. Но это уже другая история.

Аватара пользователя
Максим
Сообщения: 4874
C нами: 5 лет 11 мес
Контакты:

Непрочитанное сообщение Максим » 01 апр 2016, 01:45

Во первых время: */1 * * * *
Во вторых неверный путь до ini файла, вот верный:
%progdir%\modules\php\%phpdriver%\php-win.exe -c %progdir%\modules\php\%phpdriver%\php.ini -q -f %sitedir%\redneck\crone.php

В третьих: скрипт написан неправильно, не используется chdir. Поэтому include не работает.

Аватара пользователя
Asmodey
Cейчас: в сети
Сообщения: 299
C нами: 4 года 7 мес

Непрочитанное сообщение Asmodey » 01 апр 2016, 14:39

А откуда в консольном скрипте будут данные в сессии?

Anagar
Сообщения: 15
C нами: 1 год 3 мес

Непрочитанное сообщение Anagar » 10 апр 2016, 16:06

Максим писал(а):Во первых время: */1 * * * *
Во вторых неверный путь до ini файла, вот верный:
%progdir%\modules\php\%phpdriver%\php-win.exe -c %progdir%\modules\php\%phpdriver%\php.ini -q -f %sitedir%\redneck\crone.php

В третьих: скрипт написан неправильно, не используется chdir. Поэтому include не работает.


"Во первых время: */1 * * * *" - Это как понять? Во первых там всего 5 полей, а в вашем варианте 6. Во вторых в программе первое по значению поле обозначается как поле для минут, второе же для часов и тд... Зачем мне chdir? Файл crone.php и db_reg.php находятся в одном каталоге.
Последний раз редактировалось Anagar 10 апр 2016, 16:18, всего редактировалось 1 раз.

Anagar
Сообщения: 15
C нами: 1 год 3 мес

Непрочитанное сообщение Anagar » 10 апр 2016, 16:14

Asmodey писал(а):А откуда в консольном скрипте будут данные в сессии?

Сессии убрал, скрипт заменил на:
<?php
echo getcwd() . "\n";
include("db_reg.php");
$STH = $DBH->prepare("INSERT INTO monstrs VALUES('','mutant-beetle','200','200','2','15','2','6','2')");
$STH->execute();
?>
Последний раз редактировалось Anagar 10 апр 2016, 16:25, всего редактировалось 1 раз.

Аватара пользователя
Asmodey
Cейчас: в сети
Сообщения: 299
C нами: 4 года 7 мес

Непрочитанное сообщение Asmodey » 10 апр 2016, 16:19

Если в консоли ручками запустить скрипт отрабатывает?

К тому, что есть сомнение на счёт include.
Лучше считать, что скрипт заводится из какой-то совсем левой рабочей папки. Посему, надо перейти хотя бы туда, где находится сам скрипт.

Anagar
Сообщения: 15
C нами: 1 год 3 мес

Непрочитанное сообщение Anagar » 10 апр 2016, 16:41

Asmodey писал(а):Если в консоли ручками запустить скрипт отрабатывает?

К тому, что есть сомнение на счёт include.
Лучше считать, что скрипт заводится из какой-то совсем левой рабочей папки. Посему, надо перейти хотя бы туда, где находится сам скрипт.


Не знаю что вы этим имели ввиду, но допустим я изменил скрипт на такой и переместил crone.php на порядок выше в новую папку. Результат не изменен - ничего.
<?php
echo getcwd() . "<br>";
chdir('../');
echo getcwd();
include("db_reg.php");
$STH = $DBH->prepare("INSERT INTO monstrs VALUES('','mutant-beetle','200','200','2','15','2','6','2')");
$STH->execute();
?>

А в консоли я не умею запускать скрипты( Но с браузера все ок работает.

Аватара пользователя
Asmodey
Cейчас: в сети
Сообщения: 299
C нами: 4 года 7 мес

Непрочитанное сообщение Asmodey » 10 апр 2016, 18:07

CWD, при запуске скрипта, может отличаться от того места где собственно лежит скрипт.
Есть волшебная константа __DIR__. В ней лежит путь до скрипта! Всегда.
В начале скрипта необходимо сменить CWD - chdir( __DIR__ ). Тогда Вы 100% будете в директории скрипта. И тогда уже всё отсчитывать относительно этого места.
Абсолютные пути - зло! (с)


Вернуться в «Оффтоп и другие темы»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя