За последние 24 часа нас посетил 20951 программист и 1131 робот. Сейчас ищет 361 программист ...

Проблемы со скриптом в cron

Тема в разделе "Прочие вопросы по PHP", создана пользователем XFNeo, 30 ноя 2018.

  1. XFNeo

    XFNeo Новичок

    С нами с:
    30 ноя 2018
    Сообщения:
    10
    Симпатии:
    0
    Добрый день!
    Сайт на Битрикс распологается на хотинге reg.ru
    У фрилансеров заказали подсайты для регионов. После этого начались проблемы на основном сайте с планировщиком.

    При выполнении задачи для агентов в crontab
    /opt/php/7.2-bx-optimized/bin/php -c ~/php-bin/php.ini -f ~/www/site.ru/bitrix/modules/main/tools/cron_events.php
    в планировщике возникает ошибка

    u0111111$ /opt/php/7.0-bx-optimized/bin/php -c ~/php-bin/php.ini -f ~/www/site.ru/bitrix/modules/main/tools/cron_events.php
    PHP Warning: require_once(/var/www/u0111111/data/www/sbx15.hosting.reg.ru:1500/bitrix/modules/main/start.php): failed to open stream: No such file or directory in /var/www/u0111111/data/www/site.ru/bitrix/modules/main/include.php on line 10
    PHP Fatal error: require_once(): Failed opening required '/var/www/u0111111/data/www/sbx15.hosting.reg.ru:1500/bitrix/modules/main/start.php' (include_path='.:') in /var/www/u0111111/data/www/site.ru/bitrix/modules/main/include.php on line 10

    на 2 подсайтах теже самые задачи выполняются без проблем.
    Скрипты полностью идентичны, т.к. подсайты были полностью скопированы с основного.

    В поддержке регру сначала посоветовали:
    "Сравнили скрипты, различий не выявлено. Как мы можем видеть ,сейчас tlt.site.ru добавлен как автоподдомен для site.ru. Учитывая особенности CMS Битрикс, которая некорректно работает с автоподдоменами, мы рекомендуем добавить tlt.site.ru как отдельный www-домен и проверить актуальность проблемы."

    Но это результатов не дало. После этого они открестились:
    "Как уже сообщалось ранее проблем со стороны хостинга не наблюдаем. Задание в планировщике написано корректно. Вопрос диагностики работы скриптов сайта выходит за рамки услуг, оказываемых специалистами технической поддержки хостинга. Для решения подобного вопроса мы рекомендуем вам обратиться к специалистам, которые занимались разработкой вашего сайта. Кроме того, интересующую вас информацию вы можете найти на тематических ресурсах, посвящённых разработке используемой вами CMS."

    Заранее благодарю за помощь!

    1С-Битрикс: Управление сайтом 17.5.16.
    --- Добавлено ---
    Проблема как я понимаю в том, что он указывает неправильный путь к файлу в 10 строке
    require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/start.php");
    Когда добавляю 2 команды
    echo __DIR__;
    echo $_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/start.php";
    в первой имею вывод /var/www/u0111111/data/www/site.ru/bitrix/modules/main
    а во второй /var/www/u0111111/data/www//bitrix/modules/main/start.php

    А если выполнять через планировщик на ISP Manager хостинга, то ошибка такая же, но между www и bitrix он вставляет sbx15.hosting.reg.ru:1500
     
    #1 XFNeo, 30 ноя 2018
    Последнее редактирование: 30 ноя 2018
  2. XFNeo

    XFNeo Новичок

    С нами с:
    30 ноя 2018
    Сообщения:
    10
    Симпатии:
    0
    Выяснил, что по каким то неведанным причинам после строки
    require_once(substr(__FILE__, 0, strlen(__FILE__) - strlen("/include.php"))."/bx_root.php");
    переменная $_SERVER["DOCUMENT_ROOT"]. обнуляется....
    Подскажите куда дальше копать?)
     
  3. nospiou

    nospiou Старожил

    С нами с:
    4 фев 2018
    Сообщения:
    3.400
    Симпатии:
    510
    нету такой переменной при запуске с командной строки нету и никогда не было.
     
  4. XFNeo

    XFNeo Новичок

    С нами с:
    30 ноя 2018
    Сообщения:
    10
    Симпатии:
    0
    Это не из командной строки, а я добавляю в тело скрипта.
    Точнее это уже есть в скрипте битрикса, я просто проверял когда начинается проблема, методом подстановки echo $_SERVER["DOCUMENT_ROOT"] после каждой строки кода))
     
  5. nospiou

    nospiou Старожил

    С нами с:
    4 фев 2018
    Сообщения:
    3.400
    Симпатии:
    510
    php fpm php mod apache php cli это разные вещи используй dirname(__FILE__)
     
  6. XFNeo

    XFNeo Новичок

    С нами с:
    30 ноя 2018
    Сообщения:
    10
    Симпатии:
    0
    Порешал вопрос, в bx_root.php неправильно переопределялась переменная $_SERVER["DOCUMENT_ROOT"] для основного сайта.
     
  7. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.816
    Симпатии:
    735
    Адрес:
    Татарстан
    Что ещё раз доказывает что Битрикс тот ещё отстой
     
  8. XFNeo

    XFNeo Новичок

    С нами с:
    30 ноя 2018
    Сообщения:
    10
    Симпатии:
    0
    Есть еще одна небольшая проблемка.
    Сайт все тот же на Битрикс распологается на хотинге reg.ru
    В панировщик на ISP Manager хостинга висит все тот таже команда)
    /opt/php/7.2-bx-optimized/bin/php -c ~/php-bin/php.ini -f ~/www/site.ru/bitrix/modules/main/tools/cron_events.php ~/cron_log_main 2>&1

    Заглядываю в лог а там ошибки по несколько штук в час:
    Fri Nov 30 19:11:01 2018 (17832): Fatal Error Zend OPcache cannot allocate buffer for interned strings
    Fri Nov 30 19:12:01 2018 (24015): Fatal Error Insufficient shared memory!

    Кто может подсказать, что с этим делать?

    Пробовал в php.ini прописывать следующее:
    opcache.interned_strings_buffer=24 - не работает, в phpinfo.php по прежнему показывает значение 16
    opcache.memory_consumption=256 - не работает, в phpinfo.php по прежнему показывает значение 128
    realpath_cache_size=32 - работает, но результатов не дает.
    memory_limit=256 - стандартно стоит 128, пробовал ставить 256, 512, 1024 но после этого сайт валится с ошибкой Fatal error: Allowed memory size of 2097152 bytes exhausted (tried to allocate 20480 bytes) in /var/www/u0418839/data/www/site.ru/bitrix/modules/main/tools.php on line 868
     
  9. KRU

    KRU Новичок

    С нами с:
    18 окт 2018
    Сообщения:
    2
    Симпатии:
    0
    похоже не хватает памяти, переходить на тариф с бОльшим количеством выделяемой памяти
     
  10. XFNeo

    XFNeo Новичок

    С нами с:
    30 ноя 2018
    Сообщения:
    10
    Симпатии:
    0
    Ну на сколько я вижу у меня 3 процесса для 3 сайтов жрут по 360 мб. А на моём тарифе выделяется не более 1гб на процесс...
    USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
    u0111111 8481 6.2 0.0 362496 57308 ? S 00:57 0:35 /opt/php/7.2-bx-optimized/bin/php-cgi php
    u0111111 12560 5.2 0.0 364128 46032 ? S 01:03 0:12 /opt/php/7.2-bx-optimized/bin/php-cgi php
    u0111111 18819 0.4 0.0 361868 43724 ? S 01:03 0:00 /opt/php/7.2-bx-optimized/bin/php-cgi php

    Т.е. по факту не в этом причина
     
  11. XFNeo

    XFNeo Новичок

    С нами с:
    30 ноя 2018
    Сообщения:
    10
    Симпатии:
    0
    И кстати надо было прописать memory_limit=256M
     
  12. XFNeo

    XFNeo Новичок

    С нами с:
    30 ноя 2018
    Сообщения:
    10
    Симпатии:
    0
    Поменял 2 настройки
    realpath_cache_size=32
    memory_limit=512M
    Но это один хрен не помогло, так и валятся 2 ошибки..
    Кто может помочь?)
     
  13. nospiou

    nospiou Старожил

    С нами с:
    4 фев 2018
    Сообщения:
    3.400
    Симпатии:
    510
  14. XFNeo

    XFNeo Новичок

    С нами с:
    30 ноя 2018
    Сообщения:
    10
    Симпатии:
    0
    Проблема в том, что он и так 16 стоит по умолчанию для php с редакцией под битрикс. А поменять его на хостинге у меня нет прав.
     
  15. nospiou

    nospiou Старожил

    С нами с:
    4 фев 2018
    Сообщения:
    3.400
    Симпатии:
    510
    @XFNeo memory_limit ты где менял? в скрипте через init_set? Что тебе мешает так же менять и остальные параметры? Плюс ты можешь cli запускать с параметром php -d memory_limit=128M script.php. Если менял в htaccess или в php.ini то в первом случаи эти параметры только для апач а во втором не факт что правил нужный конфиг.
     
  16. XFNeo

    XFNeo Новичок

    С нами с:
    30 ноя 2018
    Сообщения:
    10
    Симпатии:
    0
    Вот что мне сказали в тех поддержке
    Для решения данной проблемы рекомендуем создать отдельный файл php.ini для заданий Cron, к примеру /var/www/u0111111/data/php-bin/php_cron.ini куда скопировать содержимое /var/www/u0111111/data/php-bin-php72-bx/php.ini удалив из него opcache.interned_strings_buffer и добавив в данный файл директиву для отключения opcache: opcache.enable=Off После чего необходимо указать для соответствующего задания Cron путь к этому изменённому php_cron.ini. Тогда задание будет запускаться корректно, и указанная проблема не должна возникнуть.

    в принципе ошибки в логах крон задач прекратились, но хз правильно это или нет отключать opcache для крон задач)