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

Форум

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

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

Обсуждение вопросов на другие темы связанные с веб-разработкой
webqp
Сообщения: 7
C нами: 10 мес 19 дней

Непрочитанное сообщение 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
C нами: 10 мес 19 дней

Непрочитанное сообщение 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));

?>


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

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

Непрочитанное сообщение Максим » 22 янв 2016, 00:51

Есть такая волшебная функция: chdir

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

Непрочитанное сообщение Максим » 22 янв 2016, 00:55

webqp, $_SERVER['DOCUMENT_ROOT']."/1.txt" это корневая папка домена. У вас файл 1.txt расположен в подпапке \core\checkers\ а не в корне домена.

webqp
Сообщения: 7
C нами: 10 мес 19 дней

Непрочитанное сообщение webqp » 22 янв 2016, 09:36

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


код который я выставил как пример пытался запустить из разных папок включая, index.php из корневой папки и файлы находились в корневой, результат все время был одинаковый либо не выполнялось действие либо пытались обработаться файлы из крон папки, попробую функцию которую вы посоветовали использовать.

webqp
Сообщения: 7
C нами: 10 мес 19 дней

Непрочитанное сообщение webqp » 22 янв 2016, 10:44

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

Аватара пользователя
DelphinPRO
Сообщения: 637
C нами: 4 года 10 мес
Откуда: Самара
Контакты:

Непрочитанное сообщение DelphinPRO » 22 янв 2016, 10:47

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

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

Аватара пользователя
DelphinPRO
Сообщения: 637
C нами: 4 года 10 мес
Откуда: Самара
Контакты:

Непрочитанное сообщение DelphinPRO » 22 янв 2016, 10:50

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


Ну вы бы хоть показали, как вы пытались использовать эту функцию...

webqp
Сообщения: 7
C нами: 10 мес 19 дней

Непрочитанное сообщение 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
Сообщения: 94
C нами: 1 год 3 мес

Непрочитанное сообщение GeekHacker » 22 янв 2016, 11:28

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


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

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

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