2 бесплатных плагина + одно предложение по улучшению livestreet
Сегодня хочу поделиться с сообществом двумя плагинами — для организация сгруппированной рассылки увеломлений, для сервиса loginza — для ls 1.0. Думаю они будут полезны многим. Плюс хочу предложить одно улучшение движка, что бы можно было запускать кроны на длительное время. А то с текущей версией движка они падают занимая всю отведенную для этого память.
Первый плагин — группировка отправляемых уведомлений. Предназначен для того, что бы пользователь получал не по одному уведомлению, а все вместе за определенный период например за сутки — выглядит солиднее. Да и пользователю, как-то проще ремонтироваться по одному письму вместо 10.
Плагин я разместил в каталоге после модерации он будет доступен вот по этой ссылке. А до модерации его можно скачать на моей странице с плагинами.
Что бы заставить его работать нужно сделать следующее в файле config.local.php прописать что отправка сообщений будет проводиться при помощи крона.
После этого уведомления будут не сразу отправляться, а складываться в базу данных. Что бы сообщения отправлялись нужно будет создать крон способный запускать один php файл.
Вот пример команды для крона:
Запускать его стоит раз в сутки. После этого раз в сутки человек будет получать всего одно письмо со списком всего, что случилось на сайте. И если у вас уже прописан стандартный крон для отправки сообщений, уберите его.
Второй плагин для сервиса loginza. У них есть уже готовый плагин, но он рассчитан на версию 0.4.2. И немного криво работает с версией 1. Я его довел до состояния когда он может работать с последней версией. Плюс еще сделал, что бы пользователь после авторизации при помощи loginza возвращался на страницу где он начал авторизацию, вместо главной страницы. Скачать его можно так же на моей страницы с плагинами.
Его достаточно просто использовать. Нужно скачать и распаковать архив и в конфиге плагина прописать нужные данные, которые вы получаете от сервиса loginza.
Теперь на счет улучшения движка. У меня есть кроны, которые выполняются достаточно долго. И после перехода на последнюю версию они стали жаловаться на то, что им не хватает памяти. Всему виной была строка № 197 в фале \engine\lib\internal\ConfigSimple\Config.class.php.
В ней создается замыкание. Но вот не задача, при таком способе происходит утечка памяти так, как память из под созданной функции не высвобождается. Об этом я узнал немного покопавшись в сети.
Предлагаю внести следующие изменения.
1) Добавить в класс Config переменную $configClosure
2) Добавить в этот же класс новый метод
3) Заменить строку 197 на следующею строку
Это позволит избежать утечек памяти.
Первый плагин — группировка отправляемых уведомлений. Предназначен для того, что бы пользователь получал не по одному уведомлению, а все вместе за определенный период например за сутки — выглядит солиднее. Да и пользователю, как-то проще ремонтироваться по одному письму вместо 10.
Плагин я разместил в каталоге после модерации он будет доступен вот по этой ссылке. А до модерации его можно скачать на моей странице с плагинами.
Что бы заставить его работать нужно сделать следующее в файле config.local.php прописать что отправка сообщений будет проводиться при помощи крона.
$config['module']['notify']['delayed'] = true;
После этого уведомления будут не сразу отправляться, а складываться в базу данных. Что бы сообщения отправлялись нужно будет создать крон способный запускать один php файл.
Вот пример команды для крона:
/usr/bin/php site_path/plugins/empnotify/classes/crons/send.php
Запускать его стоит раз в сутки. После этого раз в сутки человек будет получать всего одно письмо со списком всего, что случилось на сайте. И если у вас уже прописан стандартный крон для отправки сообщений, уберите его.
Второй плагин для сервиса loginza. У них есть уже готовый плагин, но он рассчитан на версию 0.4.2. И немного криво работает с версией 1. Я его довел до состояния когда он может работать с последней версией. Плюс еще сделал, что бы пользователь после авторизации при помощи loginza возвращался на страницу где он начал авторизацию, вместо главной страницы. Скачать его можно так же на моей страницы с плагинами.
Его достаточно просто использовать. Нужно скачать и распаковать архив и в конфиге плагина прописать нужные данные, которые вы получаете от сервиса loginza.
Теперь на счет улучшения движка. У меня есть кроны, которые выполняются достаточно долго. И после перехода на последнюю версию они стали жаловаться на то, что им не хватает памяти. Всему виной была строка № 197 в фале \engine\lib\internal\ConfigSimple\Config.class.php.
if(preg_match('~___([\S|\.|]+)___~Ui',$cfg))
$cfg = preg_replace_callback(
'~___([\S|\.]+)___~Ui',
create_function('$value','return Config::Get($value[1],"'.$sInstance.'");'),
$cfg
);
В ней создается замыкание. Но вот не задача, при таком способе происходит утечка памяти так, как память из под созданной функции не высвобождается. Об этом я узнал немного покопавшись в сети.
Предлагаю внести следующие изменения.
1) Добавить в класс Config переменную $configClosure
/**
* Массив обратных вызовов для сущностей класса для функции KeyReplace
* @var array
*/
static private $configClosure=array();
2) Добавить в этот же класс новый метод
static private function getClosureForConfig($sInstance=self::DEFAULT_CONFIG_INSTANCE)
{
if(array_key_exists($sInstance,self::$configClosure))
{
return self::$configClosure[$sInstance];
}
$returnValue=create_function('$value','return Config::Get($value[1],"'.$sInstance.'");');
self::$configClosure[$sInstance]=$returnValue;
return $returnValue;
}
3) Заменить строку 197 на следующею строку
if(preg_match('~___([\S|\.|]+)___~Ui',$cfg))
{
$function=self::getClosureForConfig($sInstance);
$cfg = preg_replace_callback(
'~___([\S|\.]+)___~Ui',
$function,
$cfg
);
}
Это позволит избежать утечек памяти.
15 комментариев
2. а это вопрос уже более тонкий к ort
почему сначала одно перечисление \S|\.|, а потом уже \S|\., т.е. без ещё одного «ИЛИ»?
т.к. кеш не обновляется в таком случае
Самые важные их них skey и id — они выдаются при регистрации или их можно найти в настройках виджета логинза для своего сайта. providers — список кнопок которые вы хотите видеть у себя на виджете. Их полный список можно посмотреть здесь.
Ставите себе этот плагин прописываете эти значения и у вас появляется виджет логинза
«Не передан идентификатор авторизации либо авторизация устарела. Повторите попытку.»
Я немного не понял каким образом его запускать? можно ли сделать данный процесс автоматически?