Страница 1 из 2

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

Добавлено: 21 янв 2016, 23:28
webqp
Ошибка обработки файлов каталога сайта

Запускаю крон команда:
%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));

?>
Как сделать, что бы крон обрабатывался нормально, то есть работал с файлами которые находятся в каталоге сайта

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

Добавлено: 21 янв 2016, 23:34
webqp
Попробовал вариант запускать один 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));

?>
Не обрабатывается вообще!

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

Добавлено: 22 янв 2016, 00:51
Максим
Есть такая волшебная функция: chdir

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

Добавлено: 22 янв 2016, 00:55
Максим
webqp, $_SERVER['DOCUMENT_ROOT']."/1.txt" это корневая папка домена. У вас файл 1.txt расположен в подпапке \core\checkers\ а не в корне домена.

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

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

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

Добавлено: 22 янв 2016, 10:44
webqp
В общем проблема так и не решилась даже с функцией chdir, либо не выполняется либо работает с папкой крона

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

Добавлено: 22 янв 2016, 10:47
DelphinPRO
Когда вы запускаете скрипт из-под крона, он запускается в CLI. Там нет никаких $_SERVER['DOCUMENT_ROOT']

Вам следует использовать константу __DIR__ для определения пути к файлам.

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

Добавлено: 22 янв 2016, 10:50
DelphinPRO
webqp писал(а):В общем проблема так и не решилась даже с функцией chdir, либо не выполняется либо работает с папкой крона
Ну вы бы хоть показали, как вы пытались использовать эту функцию...

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

Добавлено: 22 янв 2016, 11:19
webqp
Вариант 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));
без телодвижений

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

Добавлено: 22 янв 2016, 11:28
GeekHacker
Указывайте абсолютный путь.