форум vBSupport.ru > vBSupport.ru > How-Tos, Hints & Tips > Статьи, обзоры, каталоги
Register Меню vBsupport Изображения Files Manager О рекламе Today's Posts Search
  • Родная гавань
  • Блок РКН снят
  • Premoderation
  • For English speaking users
  • Каталог Фрилансеров
  • If you want to buy some product or script
  • Администраторам
VBsupport перешел с домена .ORG на родной .RU Ура! Пожалуйста, обновите свои закладки - VBsupport.ru
Блок РКН снят, форум доступен на всей территории России, включая новые терртории, без VPN
На форуме введена премодерация ВСЕХ новых пользователей

Почта с временных сервисов, типа mailinator.com, gawab.com и/или прочих, которые предоставляют временный почтовый ящик без регистрации и/или почтовый ящик для рассылки спама, отслеживается и блокируется, а так же заносится в спам-блок форума, аккаунты удаляются
for English speaking users:
You may be surprised with restriction of access to the attachments of the forum. The reason is the recent change in vbsupport.org strategy:

- users with reputation < 10 belong to "simple_users" users' group
- if your reputation > 10 then administrator (kerk, Luvilla) can decide to move you into an "improved" group, but only manually

Main idea is to increase motivation of community members to share their ideas and willingness to support to each other. You may write an article for the subject where you are good enough, you may answer questions, you may share vbulletin.com/org content with vbsupport.org users, receiving "thanks" equal your reputation points. We should not only consume, we should produce something.

- you may:
* increase your reputation (doing something useful for another members of community) and being improved
* purchase temporary access to the improved category:
10 $ for 3 months. - this group can download attachments, reputation/posts do not matter.
20 $ for 3 months. - this group can download attachments, reputation/posts do not matter + adds eliminated + Inbox capacity increased + files manager increased permissions.

Please contact kerk or Luvilla regarding payments.

Important!:
- if your reputation will become less then 0, you will be moved into "simple_users" users' group automatically.*
*for temporary groups (pre-paid for 3 months) reputation/posts do not matter.
Уважаемые пользователи!

На форуме открыт новый раздел "Каталог фрилансеров"

и отдельный раздел для платных заказов "Куплю/Закажу"

Если вы хотите приобрести какой то скрипт/продукт/хак из каталогов перечисленных ниже:
Каталог модулей/хаков
Ещё раз обращаем Ваше внимание: всё, что Вы скачиваете и устанавливаете на свой форум, Вы устанавливаете исключительно на свой страх и риск.
Сообщество vBSupport'а физически не в состоянии проверять все стили, хаки и нули, выкладываемые пользователями.
Помните: безопасность Вашего проекта - Ваша забота.
Убедительная просьба: при обнаружении уязвимостей или сомнительных кодов обязательно отписывайтесь в теме хака/стиля
Спасибо за понимание
 
 
 
 
Luvilla
Гость
Default Запланированные задачи, крон: возможные проблемы и решения

В рамках программы "Ликбез"

Специально для vBSupport.org


Это обзор для тех, кто только начинает осваивать движок, или никогда не задумывался, что такое "Запланированные задачи" и что за зверь cronimage.
Те, кто сам пишет хаки с собственными кронами, могут с чистой совестью закрыть вкладку
Или дополнить обзор конкретными примерами конкретных задач.

Очень популярно, очень простыми словами.

Давайте для начала ответим на вопрос: что делает форум? "Форум" как движок, а не только место общения по интересам.
Итак...
Форум хранит данные о зарегистрированных (пароли, явки, адреса)
форум считает, сколько кто постов набил
у кого сколько баллов репутации
и умеет по заданным параметрам переводить юзеров из одной группы в другую.
Параметры эти задаются в админке, где-то там, где "Повышения пользователей"

Форум считает, сколько раз просмотрели тему
сколько раз скачали вложение

Форум проверяет, не истёк ли срок пребывания в бане временно заблокированных юзеров
и если истёк - возвращает их из бани

А сколько писем отправляет форум своим верным юзерам... уууууу......
это и подписки на темы/разделы
это и напоминания о событиях - тем, кто умеет пользоваться календарём
это и поздравления с днём рождения
это и напоминания об активации по электронной почте

А сколько работы проводит форум тихо, незаметно...
например, проверяет вложения - точно ли они закреплены за конкретным постом? и если не закреплены - тихо удаляет этот ненужный и неиспользуемый хлам
Оффтоп

Как видим, форум выполняет тяжёлую работу, результаты которой не всегда сразу заметны.
И если что-то сломалось - это тоже не всегда сразу заметно
Как правило, чаще всего юзера/админы замечают, что не обновляются счётчики просмотров тем
Счётчик показывает цифру, равную количеству ответов в теме + 1
И, как правило, многие админы идут в админку, находят пункт "Обновление счётчика просмотра темы" и переключают его на "немедленно"
Так же, как и с "Обновлять счётчик просмотра вложений немедленно"
Это в корне неверно!
Лечить нужно причину, а не следствие.

Прежде всего, следует отметить, что невыполнение любой из перечисленных в списке задач может иметь причиной не только невыполнение крон-задач... "тут возможно наличие более, чем одной неисправности"©
Но, поскольку мы говорим о кроне - будем акцентировать внимание только на нём.

Крон-задачи выполняются при условиях:
- переменная присутствует в шаблоне
- на форум таки заходят не только боты, но и люди
На закрытом форуме запланированные задачи нЕ выполняются

Если вы вдруг заметили, что что-то из перечисленного выше нЕ выполняется, вам следует проверить, а не удалён ли случайно вызов крона из шаблона.

Админка - Стили и шаблоны - дальше как угодно, хоть поиском в шаблонах, хоть через "управление стилями - общие шаблоны" - откройте футер - footer.
У вас обязательно должен присутствовать в футере вот такой код:
HTML Code:
<!-- Do not remove cronimage or your scheduled tasks will cease to function -->
$cronimage
<!-- Do not remove cronimage or your scheduled tasks will cease to function -->
Для 4ки:

HTML Code:
<!-- Do not remove cronimage or your scheduled tasks will cease to function -->
{vb:raw cronimage}
<!-- Do not remove cronimage or your scheduled tasks will cease to function -->
в 5ке... всё вообще нЕ так, и не будем о ней...

комментарии здесь особого значения не имеют, главное, чтобы переменная $cronimage была
Пользуясь случаем, обращаю внимание новоиспеченных админов:
если вы не понимаете, что это за кусок кода в шаблоне - ну не трогайте вы его!!!!
Не трогайте лишний раз даже комментарии в шаблонах, ибо есть хаки, которые цепляются именно к комментариям. Это не говоря уж о том, что комменты написаны там не от балды, а для облегчения понимания...

Идём дальше. Вы убедились, что $cronimage в футере присутствует, но задачи не выполняются.

NEW !!! Поднимите глаза чуть выше строки <!-- Do not remove cronimage... и посмотрите, а не взят ли весь этот кусок в какое-то условие?

пример: стиль Cyborg Dark (Orange Black v2)
этот кусок футера:

HTML Code:
<if condition="$vboptions[copyrighttext]">
<tr>
	<td class="alt1" align="center">
	<!-- Do not remove $cronimage or your scheduled tasks will cease to function -->
	$cronimage
	<!-- Do not remove $cronimage or your scheduled tasks will cease to function -->

	$vboptions[copyrighttext]
	</td>
</tr>
</if>
То есть, если в админке не прописан копирайттекст - условие не выполнено, крон не срабатывает
вынимайте $cronimage из условий или прописывайте копирайттекст

Условий нет? - идём дальше...
Админка - Запланированные задачи - Управление задачами.
Здесь мы видим список всех запланированных задач, которые должен выполнять движок.
Штатная визуализация: если заголовок перечёркнут, значит, задача выключена.
Выключены могут быть крон-задачи, добавленные хаками, если этот хак в данный момент отключен как продукт.
Все остальные кроны нЕ должны быть зачёркнуты, возле активной задачи стоит галочка в чекбоксе.
Прочитайте список. Возможно, кто-то когда-то по неосмотретильности выключил какую-то задачу.
Ежели вдруг такое обнаружится - включите задачу, либо из выпадающего меню - включить, либо проставьте галочку в чекбокс и нажмите "Сохранить статус"

Список штатных запланированных задач:

//Список - для тройки! Для 4ки, в общем, то же самое. Если сьют - там добавляется ежедневная очистка для CMS и несколько задач для блогов//

Если в вашем списке запланированных задач вы не увидели чего-то из приведенного списка...
то, во-первых, хорошо бы выяснить, кто удалил задачу и надавать по рукам...
во-вторых, задачу нужно добавить
Там же, Админка - Запланированные задачи - Управление задачами - жмём "Добавить новую задачу"... ну и, наверное, спрашиваем в этой теме, как восстановить конкретную задачу, ибо не вижу смысла расписывать подробности для всех существующих задач...

Дальше...
если вы зашли в Админка - Запланированные задачи - Управление задачами, сравнили список и убедились, что все задачи на месте, все включены; более того, в колонке "Следующий раз" стоит дата не прошлого столетия, а сегодняшнее число (время, час:мин может быть уже прошедшее, на неактивном форуме такое бывает) - следует проверить ещё один момент.
Откройте дистрибутив includes/cron - это отдельные файлики для каждой отдельной задачи.
Идите к себе на фтп, includes/cron и сравнивайте список
Как ни парадоксально это звучит - да, может быть так, что отсутствует какой-то файл крона, но никаких ошибок не выводится
Если обнаружили пропажу файла - ессно, залейте его... а лучше просто перезалейте все файлы - если есть подозрение, что какой-то файл мог быть повреждён

===
По крону - это, пожалуй, всё
Если всё проверили, всё на месте, но проблема осталась - значит, искать нужно в другом месте.

Небольшой блиц возможных проблем.

Не отсылаются уведомления о подписках, напоминания-поздравления-прочее: проверяем настройки почты

Не снимаются нарушения - смотрим настройки нарушений, внимательно и вдумчиво, скорее всего, там что-то неправильно прописано
Не происходит разблокировка временно заблокированных пользователей - аналогично предыдущему пункту, курим настройки баллов нарушений и автоблокировки

Не происходят повышения пользователей:
1. Внимательно проверяем настройки повышений
2. Имейте в виду, повышения просчитываются только для активных пользователей. "Активных" здесь - не дефолтные 30 дней. В целях экономии и оптимизации разработчики проверяют только юзеров, у которых активность была со времени lastrun (последнего запуска) запланированной задачи. То есть, грубо говоря, юзер должен зайти на форум, тогда ближайший крон его повысит.
В том экзотическом случае, когда Вы видите, что юзеру повысили репу, и хотите сделать ему приятное - чтобы он сразу увидел повышение (экстра-экзотический случай: если Вы предполагаете, что юзер чаще ходит по форуму гостем... или обиделся и ждёт, пока ему репу натычут и повысят...) - ну... смените ему группу вручную.
Оффтоп

Не обновляются счётчики просмотров тем/вложений:
Это отдельная проблема. Частая проблема, кстати. Настолько частая, что считаю необходимым ещё раз написать решение.
Зайдите в ПМА - phpmyadmin - и посмотрите, не плодятся ли у вас таблицы с названиями aaggregate и taggregate (это штатные, кроме них - счётчики просмотров блогов, например, тоже создают аналогичные таблицы)
Если да, плодятся, их уже десятки, сотни - проверьте наличие таблиц threadviews, attachmentviews, (blog_views, если установлены блоги) и выполните диагностику этих таблиц.
Повреждение таблицы attachmentviews плодит aaggregate_temp_, повреждение threadviews соответственно taggregate_temp_
Вообще при отсутствии/повреждении таблиц вас должно бы завалить на почту сообщениями об ошибке базы данных)
Восстановите повреждённую таблицу (создайте заново, все данные - в файле install/mysql-schema.php)
Все временные aggregate - удаляйте
подробности про ошибки БД - в этой теме: Ошибка БД - Database error

===
Возвращаемся к крон-задачам.
Вопрос-ответ:

По какому принципу запланированные задачи выполняются именно с такими промежутками?
//меня слегка ставит в тупик этот вопрос//
Задачи "размазаны" по времени на 24 часа, и в течение часа - разные задачи вызываются в среднем с пятиминутным промежутком
что-то выполняется чаще, что-то реже
При этом разработчики ориентировались на среднестатистический форум, особенно по посещаемости в течение суток. Объёмные задачи, такие, как ежедневный обзор или рассылка поздравлений с ДР вынесены на ночное время. Причём, очень разумно, не на два-три ночи, когда все нормальные спят сном праведников, а на полночь, когда юзера ещё заходят на форум, но основная нагрузка уже схлынула.
Логично?
Весьма.

и тогда - следующий вопрос:
А у меня сервер - в америках, а юзера - из СНГ, может быть, мне нужно переставить время выполнения задач?
Ну, раз вопрос формулируется "может быть", значит, острой необходимости - нет)

Читал accesslog. Увидел странность: обращение к cron.php бывает подряд много раз, и цифра, например, cron.php?rand=1327575467 повторяется одна и та же, много раз. Это плохо?
Чтение логов - занятие увлекательное и очень полезное. Но полезнее, всё же, читать не access, а error.log
Почему вызывается один и тот же rand? Да, такое бывает, и не редко, особенно на посещаемых форумах. Пришло время выполнения очередной задачи, и несколько юзеров как раз ткнулись в какие-то страницы. С учётом того, что $cronimage находится в футере; время загрузки страницы у юзеров - разное; страница может быть перегружена всякими сайдбарами, и время генерации страницы - тоже не мгновенно, то юзерам совсем не обязательно заранее сговариваться и тыкать в темы на раз-два-три.
Не заморачивайтесь. Следующий rand, через пять минут, был уже с другой цифрой? значит, всё нормально.
Если уж зуд в руках и так хочется что-то сделать, можете попробовать переместить вызов крона из футера куда-нибудь повыше. Скажем, в хедер.

Хостер читал мой accesslog. Увидел множество обращений к одному файлу, cron.php, и требует, чтобы я оптимизировал работу скриптов.
Оффтоп
Какой хороший хостер... беспокоится...
Обычно в таких случаях я рекомендую просветить хостера, что с тех пор, как были изобретены сайты а-ля простая хтмл-страничка, прогресс шагнул далеко вперёд. И обычно это мало помогает)
Так же мало помогают объяснения, что просто вызов крона не грузит сервер, всё зависит от того, какую конкретно задачу запускает крон.
Впрочем, если хостер хочет быть полезным - пусть настроит системный крон. Тогда вызов переменной из футера можно будет удалить. Задачи будут вызываться не бессистемно шляющимися по форуму посетителями, а строго по расписанию.
Ссылка

Я подписан на все разделы, у меня везде проставлено уведомление о новых темах/сообщениях в разделе. На почту ничего не пришло, захожу на форум - боты заспамили весь форум! Начал чистить - поприходили уведомления и о новых темах, и о новых ЛС. Почему так? Почему уведомления не пришли сразу?
Потому что боты - нЕ люди, и ходят не с браузеров, и крон не вызывают. Значит, Вы - первый, кто после набега ботов зашёл на форум с браузера. Поскольку нет стопроцентного способа привлечь постоянно присутствующих на форуме людей, займитесь борьбой с ботами. Статья: Методы борьбы со спам ботами

Поставил хак, он должен делать то-то и то-то, но он как-то странно работает, задачи то выполняются, то нет.
Бывает, что разработчики хаков ошибаются при составлении крон-задачи. Посмотрите в Админка - Запланированные задачи - Управление задачами
Верх таблички, буквы м ч Д М ДН



минута
час
День
Месяц
День Недели

Задача со скрина выполняется на 59й минуте каждого часа, каждый день

Смотрим другие примеры задач:



Первая, подчёркнутая зелёным: выполняется в 0 часов 10 минут каждый день
Вторая - попробуйте прочесть самостоятельно, прежде чем раскрыть ответ ответ
Прочли правильно? Отлично! идём дальше.
Подчёркнутое синим: здесь всё верно? ответ
Подчёркнутое красным: ответ
Если Вы обнаружили проблему с выполнением задач конкретного продукта, не забудьте поставить разработчика в известность.
Так же напоминаю: полезно подписываться на тему с хаком, если Вы его установили - чтобы не пропустить обновления/фиксы.

===
Статья по возможности будет дополняться.

Last edited by Luvilla : 03-06-2013 at 03:41 PM.
Bot
Yandex Bot Yandex Bot is online now
 
Join Date: 05.05.2005
Реклама на форуме А что у нас тут интересного? =)
 
 
krotkovskiy
Простоузер
Default
0

Спасибо за статью, все проверил и к сожалению проблема осталась.
-- Проблема следующая:
В Опциях настроил фактор сообщ. За каждые 10 сообщений пользователь получает 1 балл к своему весу репутации.
Но Вес репутации по прежнему остался какой и был. прошло уже 4 дня ничего не изменилось подскажите пожалуйста!
 
 
Luvilla
Гость
Default

Quote:
Originally Posted by krotkovskiy View Post
В Опциях настроил фактор сообщ. За каждые 10 сообщений пользователь получает 1 балл к своему весу репутации.
вообще это вопрос больше по репутации, чем по крону...
вот тема: F.A.Q. по репутации
сделайте полный скрин настроек репутации и покажите в этой теме
 
 
Karagor
Простоузер
Default
0

У меня вот есть проблема и я не очень даже понимаю с какой стороны подойти к ее решению.
А дело вот в чем - на сервере было какое-то время выставлено неправильное время, была масса последствий этого глюка, и последнее с чем я столкнулся это как раз запланированные задачи.
У них у всех в списке время следующего выполнения стоит 5 октября 2012 года - естественно что оно еще не скоро и ничего вообще не выполняется.
Как эту дату исправить на осмысленную, то есть на текущую?
 
 
kerk
k0t
 
kerk's Avatar
Default
0

а если выполнить все задачи вручную?
но естессно предварительно убедившись, что время сервера корректное
 
 
Karagor
Простоузер
Default
0

это было первое что я попытался сделать, вроде выполнилось - но на время это не повлияло (
 
 
Luvilla
Гость
Default

Quote:
Originally Posted by Karagor View Post
но на время это не повлияло (
угу...
в таблице записан нехтран, а не ластран
ПМА - таблица cron - поле nextrun
подсмотри где-то в таблице пост какую-нибудь вчерашнюю дату и проставь её для кронов, вручную, там делов на пару минут
 
 
Karagor
Простоузер
Default
0

Спасибо большое, вроде зажило нормальной жизнью снова )
 
 
tarasus
Простоузер
Default
0

Волею судеб возникла нужда восстановить запланированные задачи по работе самого движка.
Подробного описания так и не нашёл, однако нашёлся добрый человек, который хотя бы подсказал, где посмотреть сами скрипты и откуда их подключать. За что ей большое спасибо.
Восстанавливал исключительно по-наитию: раз написано "ежечасно производит всякие очистки" - значит ставить надо раз в час. Какие конкретно - не знаю, тоже делал вроде бы по логике.
В итоге получилось плюсом три задачи. Две ежечасных, одна - ежедневная.
Скрипты, соответственно, cleanup, clanup2, dailyclanup.
Прописал, как смог (как догадался) имена переменных (будем надеяться, они всё-таки более-менее произвольны и определяются именно тут), описания, фразы не делал, ибо фиг знает, что там писать.
Когда создавал "daily cleanup 2" она почему-то создалась как стандартная, назвалась "ежечасная очистка #2", хотя я её так не называл; видимо какие-то хвосты от этих задач всё-таки где-то остались. Оставшиеся две обозвались так, как я и написал.
Что самое интересное, хоть расписанием и предполагается выполнение скрипта чуть позже текущего времени, работа началась сразу. Руками скрипт не запускал. Почему понял, что началась работа - стали сигналить модераторы, мол, ошибка БД выпадает. Зашёл, посмотрел, в базе висит длииииинный запрос по очередной таблице хэшей.
Сейчас уже 2752 секунд выполняется другой, очищающий кэш по таблице humanverify, соответственно, тормозя базу, ибо записей в таблице, судя по всему, немеряно. Но мускль пока справляется.
Вот только осталось неясным, почему же очистка пошла сразу после того, как был восстановлен скрипт. Где-то есть установленный параметр типа "запускать пропущенную задачу"?
 
 
Luvilla
Гость
Default

Quote:
Originally Posted by tarasus View Post
Вот только осталось неясным, почему же очистка пошла сразу после того, как был восстановлен скрипт.
любой заход с браузера на любую страницу форума, при условии, что там подключен футер и в футере имется переменная крона, вызывает крон
скажем так: вызывается основной крон
а он в свою очередь запускает те задачи, у которых время "следующий раз" меньше текущего
 

Tags
cron, запланированные задачи, крон


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off




All times are GMT +4. The time now is 10:35 AM.


Powered by vBulletin® Version 3.0.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.