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

Форум

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

Не выполняется скрипт по заданию (cron)

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

Непрочитанное сообщение Vitalik » 08 авг 2016, 10:25

Здравстуйте, перед тем как писать сюда - перечитал все что связано с cron, как здесь так и на сторонних ресурсах. Почему-то не выполняется скрипт, хотя в логах все хорошо, ежеминутно (как и запланировал) выполняется. По рекомендациям для проверки создал два файла, cron.php и cron.txt которые находятся в корне сайта test.ru, в cron.php поместил скрипт:
<?php 

  $fd = fopen("cron.txt","a");

  fwrite($fd, "Обращение к файлу - ".date("d.m.Y H:i")."\r\n");

  fclose($fd);

?>

Тоесть, при каждом выполнении скрипта cron.php - в файле cron.txt должно прописываться следующее:
Обращение к файлу - 11.01.2011 22:13

Обращение к файлу - 11.01.2014 22:14

Обращение к файлу - 11.01.2014 22:15

Обращение к файлу - 11.01.2014 22:16

Обращение к файлу - 11.01.2014 22:17

что и прописывается если запускать скрипт в ручном режиме (обновлением через браузер), через планировщик почему-то не работает, разные вариант перепробовал, уже незнаю где копать, пможет что-то упустил что лежит на поверхности?

Вот пути планировщика:
%progdir%\modules\php\%phpdriver%\php-win.exe -c %progdir%\modules\php\%phpdriver%\php.ini -q -f %sitedir%\test.ru\cron.php

файл php-win.exe и php.ini по данным путям - существуют, в системных файлах ничего не трогал и не менял после того как установил OpenServer (только месяц или полтора тому назад).

Настройки:
*/1 * * * *

Логи:
08 Aug 10:12:00 Start: d:\openserver\modules\php\PHP-5.5\php-win.exe -c d:\openserver\modules\php\PHP-5.5\php.ini -q -f d:\openserver\domains\test.ru\cron.php
08 Aug 10:12:00 Start result: 0
08 Aug 10:13:00 Start: d:\openserver\modules\php\PHP-5.5\php-win.exe -c d:\openserver\modules\php\PHP-5.5\php.ini -q -f d:\openserver\domains\test.ru\cron.php
08 Aug 10:13:00 Start result: 0
08 Aug 10:14:00 Start: d:\openserver\modules\php\PHP-5.5\php-win.exe -c d:\openserver\modules\php\PHP-5.5\php.ini -q -f d:\openserver\domains\test.ru\cron.php
08 Aug 10:14:00 Start result: 0
08 Aug 10:15:00 Start: d:\openserver\modules\php\PHP-5.5\php-win.exe -c d:\openserver\modules\php\PHP-5.5\php.ini -q -f d:\openserver\domains\test.ru\cron.php
08 Aug 10:15:00 Start result: 0
08 Aug 10:16:00 Start: d:\openserver\modules\php\PHP-5.5\php-win.exe -c d:\openserver\modules\php\PHP-5.5\php.ini -q -f d:\openserver\domains\test.ru\cron.php
08 Aug 10:16:00 Start result: 0
08 Aug 10:17:00 Start: d:\openserver\modules\php\PHP-5.5\php-win.exe -c d:\openserver\modules\php\PHP-5.5\php.ini -q -f d:\openserver\domains\test.ru\cron.php
08 Aug 10:17:00 Start result: 0
08 Aug 10:18:00 Start: d:\openserver\modules\php\PHP-5.5\php-win.exe -c d:\openserver\modules\php\PHP-5.5\php.ini -q -f d:\openserver\domains\test.ru\cron.php
08 Aug 10:18:00 Start result: 0
08 Aug 10:19:00 Start: d:\openserver\modules\php\PHP-5.5\php-win.exe -c d:\openserver\modules\php\PHP-5.5\php.ini -q -f d:\openserver\domains\test.ru\cron.php
08 Aug 10:19:00 Start result: 0
08 Aug 10:20:00 Start: d:\openserver\modules\php\PHP-5.5\php-win.exe -c d:\openserver\modules\php\PHP-5.5\php.ini -q -f d:\openserver\domains\test.ru\cron.php
08 Aug 10:20:00 Start result: 0
08 Aug 10:21:00 Start: d:\openserver\modules\php\PHP-5.5\php-win.exe -c d:\openserver\modules\php\PHP-5.5\php.ini -q -f d:\openserver\domains\test.ru\cron.php
08 Aug 10:21:00 Start result: 0
08 Aug 10:22:00 Start: d:\openserver\modules\php\PHP-5.5\php-win.exe -c d:\openserver\modules\php\PHP-5.5\php.ini -q -f d:\openserver\domains\test.ru\cron.php
08 Aug 10:22:00 Start result: 0
08 Aug 10:23:00 Start: d:\openserver\modules\php\PHP-5.5\php-win.exe -c d:\openserver\modules\php\PHP-5.5\php.ini -q -f d:\openserver\domains\test.ru\cron.php
08 Aug 10:23:00 Start result: 0
08 Aug 10:24:00 Start: d:\openserver\modules\php\PHP-5.5\php-win.exe -c d:\openserver\modules\php\PHP-5.5\php.ini -q -f d:\openserver\domains\test.ru\cron.php
08 Aug 10:24:01 Start result: 0

Vitalik
Сообщения: 14
C нами: 3 мес 27 дней

Непрочитанное сообщение Vitalik » 08 авг 2016, 11:47

Хм..., странно, сейчас попробовал вот такой скрипт:
 $db = mysqli_connect("localhost", "root", "", "test"); 

  $query = "INSERT INTO test (date) VALUES (NOW())";

  mysqli_query($db, $query);

и все работает нормально, в таблицу "test" БД данные прописываются ежеминутно, как и запланировано, но почему тогда выше скрипт не срабатывает? Дело в том, что мне нужно получать данные в формате json через api, и соответственно скрипт:
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $fields);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
$result = curl_exec($ch);
curl_close($ch);
print_r($result);
$results = json_decode($result, true);
echo "<pre>"; print_r($results);

Который также через cron не работает почему то, хотя при обновлении странички - данные (остатков на складе) обновляются. Кто сталкивался с подобной проблемой, напишите пожалуйста что делаю не так. Спасибо.

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

Непрочитанное сообщение Asmodey » 08 авг 2016, 13:33

Оно пишет файл не туда, куда Вам кажется, должно писать.

Vitalik
Сообщения: 14
C нами: 3 мес 27 дней

Непрочитанное сообщение Vitalik » 08 авг 2016, 14:32

Asmodey писал(а):Оно пишет файл не туда, куда Вам кажется, должно писать.

Возможно да, путь иной нужно прописывать, но почему тогда неработает скрипт с curl? ведь там нет никаких путей для записи сработанного скрипта, в ручном режиме все работает при обновлении страницы..

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

Непрочитанное сообщение Asmodey » 08 авг 2016, 15:16

Так что считать результатом работы? Чего-то откуда-то качает и печатает в консоль.
Или это не весь скрипт?
Какие значения $url, $fields?
Что в $result и в $results?

Лучше там не принт и эхо, а записать в файл. Только файло хранить относительно __DIR__, когда будет понятно где они лежат.

Vitalik
Сообщения: 14
C нами: 3 мес 27 дней

Непрочитанное сообщение Vitalik » 08 авг 2016, 16:51

Asmodey писал(а):Так что считать результатом работы? Чего-то откуда-то качает и печатает в консоль.
Или это не весь скрипт?
Какие значения $url, $fields?
Что в $result и в $results?

Лучше там не принт и эхо, а записать в файл. Только файло хранить относительно __DIR__, когда будет понятно где они лежат.


Значение $url - ('http://site.ru/handler_api.php?api_key=$***************&action=getProductCol')
Дело в том, что мне нужно по api получать данные (количество) определенных товаров, которое периодически меняются.
По поводу конфигурации curl, $fields и т.д.., возможно это лишнее, изначально пробовал так:
$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, 'http://site.ru/handler_api.php?api_key=$***************&action=getProductCol');

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$result = curl_exec($ch);

curl_close($ch);

print_r($result);

$results = json_decode($result, true);

 

echo "<pre>"; print_r($results);


В итоге получаю ответ от сервера в json формате, пример:
[{"product1":"300","product2":"300","product3":"1","product4":"299"}]

Array

(

    [0] => Array

        (

            [product1] => 300

            [product2] => 300

            [product3] => 1

            [product4] => 299

        )

 

)

Скрипт (запрос) работает при обновлении файла скрипта в браузере - меняется и количество, но через cron не выполняется((, а мне нужно автоматизировать этот процесс, что бы остатки обновлялись с определенной периодичностю.

Мне нужно в конечном итоге получать переменные со значением (300, 234, 76 и т.д.), что бы каждое из значений потом стилизировать и назназначить определенному товару, но это уже другая тема, нужно что бы все это работало (выполнялось) через cron

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

Непрочитанное сообщение Asmodey » 08 авг 2016, 18:15

У Вас несколько этапов. Посему надо определить, что именно не отрабатывает по крону.
1. Получение данных с чужого сайта.
2. Обработка.
3. Запихивание в БД.

$log = fopen(__DIR__.'/log.txt','a');
//Файл лога будет лежать рядом со скриптом.

//1. этап
...
//Логирование результатов первого этапа
... и т.д.


Иначе, гадание по кофейной гуще.

Vitalik
Сообщения: 14
C нами: 3 мес 27 дней

Непрочитанное сообщение Vitalik » 08 авг 2016, 19:12

Asmodey писал(а):У Вас несколько этапов. Посему надо определить, что именно не отрабатывает по крону.
1. Получение данных с чужого сайта.
2. Обработка.
3. Запихивание в БД.
Иначе, гадание по кофейной гуще.


1. Не отрабатывается получение данных с чужого сайта по API

Поставил данную строчку кода в файл, перезапустил сервер, вот логи из планировщика:
08 Aug 19:06:09 Start nnCron
08 Aug 19:06:09 Load cron.tab
08 Aug 19:06:09 Start: d:\openserver\modules\php\PHP-5.5\php-win.exe -c d:\openserver\modules\php\PHP-5.5\php.ini -q -f d:\openserver\domains\test.ru\cron.php
08 Aug 19:06:09 Start result: 0
08 Aug 19:07:00 Start: d:\openserver\modules\php\PHP-5.5\php-win.exe -c d:\openserver\modules\php\PHP-5.5\php.ini -q -f d:\openserver\domains\test.ru\cron.php
08 Aug 19:07:00 Start result: 0
08 Aug 19:08:00 Start: d:\openserver\modules\php\PHP-5.5\php-win.exe -c d:\openserver\modules\php\PHP-5.5\php.ini -q -f d:\openserver\domains\test.ru\cron.php
08 Aug 19:08:00 Start result: 0
08 Aug 19:09:00 Start: d:\openserver\modules\php\PHP-5.5\php-win.exe -c d:\openserver\modules\php\PHP-5.5\php.ini -q -f d:\openserver\domains\test.ru\cron.php
08 Aug 19:09:00 Start result: 0
08 Aug 19:10:00 Start: d:\openserver\modules\php\PHP-5.5\php-win.exe -c d:\openserver\modules\php\PHP-5.5\php.ini -q -f d:\openserver\domains\test.ru\cron.php
08 Aug 19:10:00 Start result: 0

а в файле log.txt логов нет, даже если вручную запуcкаю файл cron.php с данной строчкой кода внутри.

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

Непрочитанное сообщение Asmodey » 08 авг 2016, 21:06

Vitalik писал(а):...в файле log.txt логов нет, даже если вручную запуcкаю файл cron.php с данной строчкой кода внутри.


Вот тебе и раз. :( Так надо начинать отсюда. Почему в файл не пишется информация-то.
Сам файл создаётся?
Как пишете в него лог?

Vitalik
Сообщения: 14
C нами: 3 мес 27 дней

Непрочитанное сообщение Vitalik » 08 авг 2016, 22:38

Asmodey писал(а):
Vitalik писал(а):...в файле log.txt логов нет, даже если вручную запуcкаю файл cron.php с данной строчкой кода внутри.


Вот тебе и раз. :( Так надо начинать отсюда. Почему в файл не пишется информация-то.
Сам файл создаётся?
Как пишете в него лог?

Текстовый файл log.txt создался автоматически, но он пуст, а что должно записываться в нем? я так понял что если он создается автоматически, значит cron работает и пути прописаны верно? тогда почему не выполняет стандартные curl скрипт? уже на англоязычных ресурсах все перерыл по разным запросам и ничего ненашел что бы навело меня на подсказку((


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

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

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