Я в недоумении. Честно. Выходит, за реализацию верстки 1 (прописью: одной) статической страницы, той, что можно сделать обычным плагином «Page» — теперь просят 5$. Слов нету, одни эмоции, куда катится LS.
У меня была ситуация, когда пользователь попросил его удалить. 10к+ топиков, и свыше 80 тысяч комментариев, равномерно размазанных среди миллионов подобных, не говоря уже о связанных объектах.
Запрос mySQL длился 14 минут.
Неверно. 502 дословно значит то, что фронт-енд сервер не смог достучаться до бекенда.
Причина проста: время исполнения скрипта превысило таймаут ожидания, обычно 30с.
Так что если у пользователя много постов и, особенно, комментариев, то тут все админки и скрипты, к сожалению, дружно идут лесом, и выход тут один — через консоль mySQL удалять пользователя. Если движок InnoDB, то внешние ключи (если они заблаговременно написаны) проследят за связностью данных (ON DELETE CASCSDE и иже с ними). Так что советы тут как раз полезные.
Для того, чтобы не нарушать связность БД. Для MyISAM это мало актуально, но для InnoDB(XtraDB) это критично.
Нет, конечно, всегда можно убрать 1 внешний ключ, но не рекомендуется.
— yay! Наконец-то, новая версия! Спасибо! *Orhideous со счастливым выражением мордочки улетел на GitHub утащить копию для тестов, не забыв, впрочем, оставить автору заслуженный чай.
<?php
/**
* Smarty plugin
* @package Smarty
* @subpackage plugins
*/
/**
* Smarty strip_tags modifier plugin
*
* Type: modifier
* Name: strip_tags
* Purpose: strip html tags from text
* @link http://smarty.php.net/manual/en/language.modifier.strip.tags.php
* strip_tags (Smarty online manual)
* @author Monte Ohrt <monte at ohrt dot com>
* @author Jordon Mears <jordoncm at gmail dot com>
* @author Tekin Birdüzen <t.birduezen at web-coding dot eu>
*
* @version 3.0
*
* @param string
* @param boolean optional
* @param string optional
* @return string
*/
function smarty_modifier_strip_tags($string)
{
// HTML5 selfclosing tags
$selfclosingTags = array('area', 'base', 'br', 'col', 'command', 'embed', 'hr', 'img', 'input', 'keygen', 'link', 'meta', 'param', 'source', 'track', 'wbr');
/**
* Find out how many arguments we have and
* initialize the needed variables
*/
switch (func_num_args()) {
case 1:
$replace_with_space = true;
break;
case 2:
$arg = func_get_arg(1);
if ($arg === 1 || $arg === true || $arg === '1' || $arg === 'true') {
// for full legacy support || $arg === 'false' should be included
$replace_with_space = ' ';
$allowed_tags = '';
} elseif ($arg === 0 || $arg === false || $arg === '0' || $arg === 'false') {
// for full legacy support || $arg === 'false' should be removed
$replace_with_space = '';
$allowed_tags = '';
} else {
$replace_with_space = ' ';
$allowed_tags = $arg;
}
break;
case 3:
$replace_with_space = func_get_arg(1) ? ' ' : '';
$allowed_tags = func_get_arg(2);
break;
}
if (strlen($allowed_tags)) {
// Allowed tags are set
$allowed_tags = str_replace(array(' />', '/>', '>'), '', $allowed_tags);
$allowed_tags = substr(str_replace('<', '|', $allowed_tags), 1);
// This is to delete the allowed selfclosing tags from the list
$tagArray = explode('|', $allowed_tags);
$selfclosingTags = array_diff($selfclosingTags, $tagArray);
unset ($tagArray);
}
// Let's get rid of the selfclosing tags first
if (count($selfclosingTags)) {
$string = preg_replace('/<(' . implode('|', $selfclosingTags) . ')\s?[^>]*?\/>/is', $replace_with_space, $string);
}
// And now the other tags
if (strlen($allowed_tags)) {
while (preg_match("/<(?!({$allowed_tags}))([a-z1-5]+)\s?[^>]*?>([^<]*?)<\/\\2>/is", $string))
$string = preg_replace("/<(?!({$allowed_tags}))([a-z1-5]+)\s?[^>]*?>([^<]*?)<\/\\2>/is", '$3' . $replace_with_space, $string);
}
else {
// Absolutely no tags allowed
while (preg_match("/<([a-z1-5]+)\s?[^>]*?>([^<]*?)<\/\\1>/is", $string))
$string = preg_replace("/<([a-z1-5]+)\s?[^>]*?>([^<]*?)<\/\\1>/is", '$2' . $replace_with_space, $string);
}
return $string;
}
/* vim: set expandtab: */
?>
Как этим пользоваться:
{$string|strip_tags} — удаляет все теги и заменяет их пробелами;
{$string|strip_tags:false} — удаляет все теги и не заменяет их пробелами;
{$string|strip_tags:''} — удаляет все теги, за исключением <b> и заменяет их пробелами;
{$string|strip_tags:false:''} strips all tags except b and br tags without replacing them with a space
— У меня к запросам в PMA стойкое отвращение после того, как добавление внешних ключей на InnoDB в консоли шло ~3000c. И это на восьмиядерном i7 с 32Гб оперативной. Смотреть — да. Но не запросы.
— Гм. Никак. — улыбнулся Orhideous. — Видите ли, модификатор Smarty strip_tags реализован плагином. Прошарьтесь в папке с плагинами, найдете его.
А потом сделайте свой, с понями и аликорнами. Но оригинальный обязательно оставьте.
Запрос mySQL длился 14 минут.
Причина проста: время исполнения скрипта превысило таймаут ожидания, обычно 30с.
Так что если у пользователя много постов и, особенно, комментариев, то тут все админки и скрипты, к сожалению, дружно идут лесом, и выход тут один — через консоль mySQL удалять пользователя. Если движок InnoDB, то внешние ключи (если они заблаговременно написаны) проследят за связностью данных (ON DELETE CASCSDE и иже с ними). Так что советы тут как раз полезные.
Нет, конечно, всегда можно убрать 1 внешний ключ, но не рекомендуется.
*Orhideous со счастливым выражением мордочки улетел на GitHub утащить копию для тестов, не забыв, впрочем, оставить автору заслуженный чай.
Как этим пользоваться:
{$string|strip_tags} — удаляет все теги и заменяет их пробелами;
{$string|strip_tags:false} — удаляет все теги и не заменяет их пробелами;
{$string|strip_tags:''} — удаляет все теги, за исключением <b> и заменяет их пробелами;
{$string|strip_tags:false:''} strips all tags except b and br tags without replacing them with a space
А потом сделайте свой,
с понями и аликорнами. Но оригинальный обязательно оставьте.подключаешь его в config.php (в списке JS)
В видное место темы пишешь ссылку:
Отключаешь кеширование и склейку CSS.
Всё. Теперь алгоритм работы прост. Изменила-сохранила-нажала на ссылку-посмотрела результат.
И теперь вызываем reloadCSS как угодно.
Плюсы: затрагиваются только CSS, исправлена обработка "&" в href (как в гугловских стилях)