Модуль умеет запускать задачи в двух режимах: обычного (в режиме сайта) и из командной строки.
Эти режимы отличаются, и часто на серверах для этих двух режимов даже конфиги разные, из-за этого (а также из-за других нюансов) возможны проблемы. Например, в режиме запуска из командной строки текущий сайт может определяться некорректно. Оно и понятно: в обычном режиме сайт всегда видит адрес, по которому пришёл абсолютно любой пользователь. А в режиме командной строки сайт просто запускается командной, возможно даже с запуском по расписанию. Никакого адреса сайта в этом режиме не существует.
А ведь некоторые программисты, когда пишут критически важные для сайта скрипты, даже не знают, что возможен второй режим запуска (при том, что перевод агентов на крон, который уже много лет рекомендуется всеми, в том числе проверкой сайта, используетт запуск из командной строки). И часто совершают ошибки, которые в этом режиме ведут к проблемам. Например, программист может создать обработчик, который при открытии сайта проверяет пользователя, адрес сайта, или с какого источника он пришёл, и в случае необходимости завершает работу скрипта. И это становится причиной того, что все запросы из командной строки приводят к тому, что ничего не работает. Просто запускается и сразу останавливается. И агенты не работают. И задания модуля экспорта не выполняются по расписанию.
Мало того, есть и другие важные нюансы. Например, некоторые клиенты рассуждают так: "сначала настрою в ручном режиме, а потом буду смотреть: почему же в автоматическом режиме у меня ничего не работает". С одной стороны, вроде правильно, сначала сделать одно, потом другое. Но тут нужно понимать, что если у клиента включена многопоточность, то она всегда (абсолютно всегда, без исключений) использует запуск из командной строки. Поэтому, если автозапуск не работает, то и ручной запуск с многопоточностью не будет работать. То же относится и к запуску в фоне (как в многопоточном режиме, так и в обычном), т.к. этом случае запуск происходит командой.
Таким образом, проверяя запуск, имейте в виду, что проблем может быть много, и не всегда всё не так просто, как кажется на первый взгляд.
Отметим дополнительные особенности запуска в режиме командной строки, с которыми часто сталкиваются наши клиенты:
1) неправильно определяется текущий сайт, поэтому вместо цен Санкт-Петербурга могут выгружаться цены Москвы, или скидки неправильно применяться, или модуль может сообщать что цены не заполнены (хотя они заполнены): так получается, когда клиент уверен что выгружает цены Москвы, а в результате неправильного определения сайта скрипт считает что нужно выгружать цены другого города.
2) неправильно указанная команда (или конфигурационные параметры) приводят любой запуск в режиме командной строки к ошибке. Если Вы не знаете, какую версию указать (или где это указать) - обращайтесь к нам, поможем.
3) ограничения памяти - в режиме запуска из командной строки могут выполняться совсем другие алгоритмы, которым требуется больше памяти, наш модуль в конфиге запуска может прописывать увеличение памяти, но в скрипте может быть жёстко прописано использование ограниченного количества памяти.
4) подключение модулей - если в скриптах используются классы, например, инфоблоков, то не нужно надеяться, что модуль инфоблоков чудом будет подключён автоматически (так иногда кажется, когда чуть ранее выполняется другой код, подключающий модуль), иначе запуск будет приводить к ошибке.
5) ещё о памяти: имейте в виду, если у Вас сервер, например, с 4Гб оперативной памяти, на скрипт задано ограничение 512Мб, то каждый поток может потреблять 512Мб памяти. И один запуск в режиме многопоточности с 8ю потоками может съесть всю память сервера. Кроме того, помните, что в это время сайт активно посещается пользователями, и на это нужно много памяти. А если в это время запустится ещё и другой профиль, то серверу может не хватить памяти, последствия могут быть печальными. Т.е. если используете многопоточность при ограниченных ресурсах - контролируйте одновременные запуски.
Эти режимы отличаются, и часто на серверах для этих двух режимов даже конфиги разные, из-за этого (а также из-за других нюансов) возможны проблемы. Например, в режиме запуска из командной строки текущий сайт может определяться некорректно. Оно и понятно: в обычном режиме сайт всегда видит адрес, по которому пришёл абсолютно любой пользователь. А в режиме командной строки сайт просто запускается командной, возможно даже с запуском по расписанию. Никакого адреса сайта в этом режиме не существует.
А ведь некоторые программисты, когда пишут критически важные для сайта скрипты, даже не знают, что возможен второй режим запуска (при том, что перевод агентов на крон, который уже много лет рекомендуется всеми, в том числе проверкой сайта, используетт запуск из командной строки). И часто совершают ошибки, которые в этом режиме ведут к проблемам. Например, программист может создать обработчик, который при открытии сайта проверяет пользователя, адрес сайта, или с какого источника он пришёл, и в случае необходимости завершает работу скрипта. И это становится причиной того, что все запросы из командной строки приводят к тому, что ничего не работает. Просто запускается и сразу останавливается. И агенты не работают. И задания модуля экспорта не выполняются по расписанию.
Мало того, есть и другие важные нюансы. Например, некоторые клиенты рассуждают так: "сначала настрою в ручном режиме, а потом буду смотреть: почему же в автоматическом режиме у меня ничего не работает". С одной стороны, вроде правильно, сначала сделать одно, потом другое. Но тут нужно понимать, что если у клиента включена многопоточность, то она всегда (абсолютно всегда, без исключений) использует запуск из командной строки. Поэтому, если автозапуск не работает, то и ручной запуск с многопоточностью не будет работать. То же относится и к запуску в фоне (как в многопоточном режиме, так и в обычном), т.к. этом случае запуск происходит командой.
Таким образом, проверяя запуск, имейте в виду, что проблем может быть много, и не всегда всё не так просто, как кажется на первый взгляд.
Отметим дополнительные особенности запуска в режиме командной строки, с которыми часто сталкиваются наши клиенты:
1) неправильно определяется текущий сайт, поэтому вместо цен Санкт-Петербурга могут выгружаться цены Москвы, или скидки неправильно применяться, или модуль может сообщать что цены не заполнены (хотя они заполнены): так получается, когда клиент уверен что выгружает цены Москвы, а в результате неправильного определения сайта скрипт считает что нужно выгружать цены другого города.
2) неправильно указанная команда (или конфигурационные параметры) приводят любой запуск в режиме командной строки к ошибке. Если Вы не знаете, какую версию указать (или где это указать) - обращайтесь к нам, поможем.
3) ограничения памяти - в режиме запуска из командной строки могут выполняться совсем другие алгоритмы, которым требуется больше памяти, наш модуль в конфиге запуска может прописывать увеличение памяти, но в скрипте может быть жёстко прописано использование ограниченного количества памяти.
4) подключение модулей - если в скриптах используются классы, например, инфоблоков, то не нужно надеяться, что модуль инфоблоков чудом будет подключён автоматически (так иногда кажется, когда чуть ранее выполняется другой код, подключающий модуль), иначе запуск будет приводить к ошибке.
5) ещё о памяти: имейте в виду, если у Вас сервер, например, с 4Гб оперативной памяти, на скрипт задано ограничение 512Мб, то каждый поток может потреблять 512Мб памяти. И один запуск в режиме многопоточности с 8ю потоками может съесть всю память сервера. Кроме того, помните, что в это время сайт активно посещается пользователями, и на это нужно много памяти. А если в это время запустится ещё и другой профиль, то серверу может не хватить памяти, последствия могут быть печальными. Т.е. если используете многопоточность при ограниченных ресурсах - контролируйте одновременные запуски.
Возврат к списку