Ошибка при выполнении крона

Обсуждение других вопросов связанных с веб-разработкой
webqp
Сообщения: 7
Зарегистрирован:
21 янв 2016, 23:18

Ошибка при выполнении крона

webqp » 21 янв 2016, 23:28

Ошибка обработки файлов каталога сайта

Запускаю крон команда:
%progdir%\modules\php\%phpdriver%\php-win.exe -c %progdir%\modules\php\%phpdriver%\php.ini -q -f %sitedir%\localhost\index.php
Лог:
21 Jan 22:58:44 Start nnCron
21 Jan 22:58:44 Load cron.tab
21 Jan 22:59:00 Start: c:\openserver\modules\php\PHP-5.6\php-win.exe -c c:\openserver\modules\php\PHP-5.6\php.ini -q -f c:\openserver\domains\localhost\core\checkers\checker1.php
21 Jan 22:59:00 Start result: 0
21 Jan 23:00:00 Start: c:\openserver\modules\php\PHP-5.6\php-win.exe -c c:\openserver\modules\php\PHP-5.6\php.ini -q -f c:\openserver\domains\localhost\core\checkers\checker1.php
21 Jan 23:00:00 Start result: 0
Скрипт вроде как выполняется, для проверки простое действие берет из файла первую строку удаляет ее переписывает файл без строки и пишет в отдельный файл удаленную строку.

Вариантов решения перепробовал много играл с php.ini файлами указывал разные конфегурации версии php.

Что в итоге лучший вариант которого смог добиться это:

1) Скрипт запускается
2) Текстовые файлы находящиеся в каталоге сайта не обрабатываются
3) Вместо файлов в каталоге сайта создаются 2 файла в папке
C:\OpenServer\modules\cron 1) Файл который нужно обработать и 2) Файл в котором должна писаться удаленная строка

Сам код файла
<?php

$row_number = 0;    //номер строки которую удаляем
$file_out = file("1.txt"); // Считываем весь файл в массив
file_put_contents("rob.txt", $file_out[$row_number], FILE_APPEND);
unset($file_out[$row_number]);
file_put_contents("1.txt", implode("", $file_out));

?>
Как сделать, что бы крон обрабатывался нормально, то есть работал с файлами которые находятся в каталоге сайта
webqp
Сообщения: 7
Зарегистрирован:
21 янв 2016, 23:18

Re: Ошибка при выполнении крона

webqp » 21 янв 2016, 23:34

Попробовал вариант запускать один php файл с вызовом другого тоже самое фалы пишутся в крон папку.

Вариант код:
<?php

$row_number = 0;    //номер строки которую удаляем
$file_out = file($_SERVER['DOCUMENT_ROOT']."/1.txt"); // Считываем весь файл в массив
file_put_contents($_SERVER['DOCUMENT_ROOT']."/rob.txt", $file_out[$row_number], FILE_APPEND);
unset($file_out[$row_number]);
file_put_contents($_SERVER['DOCUMENT_ROOT']."/1.txt", implode("", $file_out));

?>
Не обрабатывается вообще!
Аватара пользователя
Максим
Сообщения: 5414
Зарегистрирован:
11 дек 2010, 20:29
Контактная информация:

Re: Ошибка при выполнении крона

Максим » 22 янв 2016, 00:51

Есть такая волшебная функция: chdir
Аватара пользователя
Максим
Сообщения: 5414
Зарегистрирован:
11 дек 2010, 20:29
Контактная информация:

Re: Ошибка при выполнении крона

Максим » 22 янв 2016, 00:55

webqp, $_SERVER['DOCUMENT_ROOT']."/1.txt" это корневая папка домена. У вас файл 1.txt расположен в подпапке \core\checkers\ а не в корне домена.
webqp
Сообщения: 7
Зарегистрирован:
21 янв 2016, 23:18

Re: Ошибка при выполнении крона

webqp » 22 янв 2016, 09:36

Максим писал(а):webqp, $_SERVER['DOCUMENT_ROOT']."/1.txt" это корневая папка домена. У вас файл 1.txt расположен в подпапке \core\checkers\ а не в корне домена.
код который я выставил как пример пытался запустить из разных папок включая, index.php из корневой папки и файлы находились в корневой, результат все время был одинаковый либо не выполнялось действие либо пытались обработаться файлы из крон папки, попробую функцию которую вы посоветовали использовать.
webqp
Сообщения: 7
Зарегистрирован:
21 янв 2016, 23:18

Re: Ошибка при выполнении крона

webqp » 22 янв 2016, 10:44

В общем проблема так и не решилась даже с функцией chdir, либо не выполняется либо работает с папкой крона
Аватара пользователя
DelphinPRO
Сообщения: 803
Зарегистрирован:
01 фев 2012, 17:27
Откуда: Самара
Контактная информация:

Re: Ошибка при выполнении крона

DelphinPRO » 22 янв 2016, 10:47

Когда вы запускаете скрипт из-под крона, он запускается в CLI. Там нет никаких $_SERVER['DOCUMENT_ROOT']

Вам следует использовать константу __DIR__ для определения пути к файлам.
Аватара пользователя
DelphinPRO
Сообщения: 803
Зарегистрирован:
01 фев 2012, 17:27
Откуда: Самара
Контактная информация:

Re: Ошибка при выполнении крона

DelphinPRO » 22 янв 2016, 10:50

webqp писал(а):В общем проблема так и не решилась даже с функцией chdir, либо не выполняется либо работает с папкой крона
Ну вы бы хоть показали, как вы пытались использовать эту функцию...
webqp
Сообщения: 7
Зарегистрирован:
21 янв 2016, 23:18

Re: Ошибка при выполнении крона

webqp » 22 янв 2016, 11:19

Вариант 1.

Папку для public_html для теста создал положил туда файл
chdir('public_html');
$row_number = 0;    //номер строки которую удаляем
$file_out = file(getcwd()."/1.txt"); // Считываем весь файл в массив
file_put_contents(getcwd()."/rob.txt", $file_out[$row_number], FILE_APPEND);
unset($file_out[$row_number]);
file_put_contents(getcwd()."/1.txt", implode("", $file_out));
Обработка ушла в папку крон

Вариант 2.
$row_number = 0;    //номер строки которую удаляем
$file_out = file(getcwd()."/1.txt"); // Считываем весь файл в массив
file_put_contents(getcwd()."/rob.txt", $file_out[$row_number], FILE_APPEND);
unset($file_out[$row_number]);
file_put_contents(getcwd()."/1.txt", implode("", $file_out));
Ни каких тело движений

Вариант 3.
chdir('public_html');

$row_number = 0;    //номер строки которую удаляем
$file_out = file(getcwd()."1.txt"); // Считываем весь файл в массив
file_put_contents(getcwd()."rob.txt", $file_out[$row_number], FILE_APPEND);
unset($file_out[$row_number]);
file_put_contents(getcwd()."1.txt", implode("", $file_out));
Так же как и в первом варианте уходи в крон

Вариант 4.
chdir('public_html');

$row_number = 0;    //номер строки которую удаляем
$file_out = file(getcwd()."\1.txt"); // Считываем весь файл в массив
file_put_contents(getcwd()."\rob.txt", $file_out[$row_number], FILE_APPEND);
unset($file_out[$row_number]);
file_put_contents(getcwd()."\1.txt", implode("", $file_out));
без телодвижений

вариант 5.
$row_number = 0;    //номер строки которую удаляем
$file_out = file(getcwd()."\1.txt"); // Считываем весь файл в массив
file_put_contents(getcwd()."\rob.txt", $file_out[$row_number], FILE_APPEND);
unset($file_out[$row_number]);
file_put_contents(getcwd()."\1.txt", implode("", $file_out));
без телодвижений
Последний раз редактировалось DelphinPRO 22 янв 2016, 11:51, всего редактировалось 1 раз.
Причина: Оформляйте, пожалуйста, свои сообщения аккуратно (оборачивайте код bb-тегами). Проявляйте уважение к отвечающим.
GeekHacker
Сообщения: 125
Зарегистрирован:
24 авг 2015, 15:22

Re: Ошибка при выполнении крона

GeekHacker » 22 янв 2016, 11:28

Указывайте абсолютный путь.
Ответить