CMTV
Проверенные
- Сообщения
- 238
- Решения
- 2
- Реакции
- 1,181
- Баллы
- 1,935
Смотрите видео ниже, чтобы узнать, как установить наш сайт в качестве веб-приложения на домашнем экране.
Примечание: В настоящее время эта функция требует доступа к сайту с помощью встроенного браузера Safari.
namespace CMTV\QuestionThreads;
use CMTV\QuestionThreads\Constants as C;
class Constants
{
const ADDON_ID = [
'CMTV',
'QuestionThreads'
];
const ADDON_ID_SHORT = [
'CMTV',
'QT'
];
public static function _(string $content = ''): string
{
$shortId = implode('_', self::ADDON_ID_SHORT);
return $shortId . (empty($content) ? '' : '_' . $content);
}
public static function __(string $content): string
{
return implode('\\', self::ADDON_ID) . ':' . $content;
}
}
case C::_('questions_asked'):
$db = \XF::db();
$questions = $db->fetchOne(
"SELECT COUNT(*) FROM `xf_thread` WHERE `CMTV_QT_is_question` = 1 AND `user_id` = ?",
$user->user_id
);
$returnValue = $questions >= $data['questions'];
break;
case C::_('questions_maximum'):
$db = \XF::db();
$questions = $db->fetchOne(
"SELECT COUNT(*) FROM `xf_thread` WHERE `CMTV_QT_is_question` = 1 AND `user_id` = ?",
$user->user_id
);
$returnValue = $questions <= $data['questions'];
break;
$questions <= $data['questions']
.Типо как тут?утилы, с нормальными именами и комментариями
Смысл в том, чтобы писатьИ в чём смысл юз этого же класса.
C::_('phrase')
, а не 'CMTV_QT_phrase'
и C::__('BestAnswer')
, а не 'CMTV/QuestionThreads:BestAnswer'
.Можно и так. Просто я вроде где-то слышал (от Майка вроде), что Finder работает медленно. Но, возможно, это было про другое... Посмотрю, что можно сделать.Для критериев, что идёт обычный файндер который найдёт к тому же идёт 1 и тот же запрос и вынести его выше свитча в виде файндера и и потом уже сравнивать в самом запросе
Эм 1 и тот же запрос будет, не минуя абстракцию каким образом оно будет медленнее?Можно и так. Просто я вроде где-то слышал (от Майка вроде), что Finder работает медленно. Но, возможно, это было про другое... Посмотрю, что можно сделать.
$questions = \XF::finder('XF:Thread')
->where('CMTV_QT_is_question', true)
->where('user_id', $user->user_id)
->fetch()
->count();
Да, наврал.каким образом оно будет медленнее
.в чём смысл? Если один и тот же запрос. Разработчики сами спокойно используют такие запросы. Одно дело использоватьЭм 1 и тот же запрос будет, не минуя абстракцию каким образом оно будет медленнее?
finder
для того, чтобы получить какие-то объекты из БД, но когда тебе нужно сделать select count
это не имеет смысла. Лишнюю память только занимать.Исправления
- Исправлена ошибка во время установки
Не совсем так, а вот так:Captain так?
Тут проблема в том, что он возвращает массив Entity. А что если вопросов 1000, 10000?PHP:$questions = \XF::finder('XF:Thread') ->where('CMTV_QT_is_question', true) ->where('user_id', $user->user_id) ->fetch() ->count();
Да, наврал.
Вот та тема. Там про другое речь шла.
У Вас недостаточно прав для просмотра ссылок. Вход или Регистрация
$questions = \XF::finder('XF:Thread')
->where([
'CMTV_QT_is_question' => true,
'user_id' => $user->user_id
])->total();
.чего? :D В каком это месте?Они от них избавляются потихоньку с каждым релизом и переделывают и это прекрасно видно.
Так запрос пропускается через адаптер как бы в любом случае.Прикрутить свой любой адаптер и использовать тот же psql будет проблемно от таких прямых запросов.
Всё нормально у тебя. Если ты будешь делать это через@Captain так?
Finder
, то ты будешь только тратить лишние ресурсы, а это уже не оптимизация..так ты посмотри, в каких случаях они используютИ я могу кучу привести примеров и из релиза в релиз переделывается это всё.
total
, в большинстве он используется только когда они с помощью него получают объекты. Каким образом оно будет больше тратить памяти? Ну расскажи мне как устроена память и как она работает на низком уровне уж очень интересно. Раз будет больше требовать ресурсов это очень интересно :D.
memory_get_usage
при db()->fetchOne('select count(*) from xf_user')
4590344
4592336
$app->finder('XF:User')->total()
4590320
5428696
Исправлена проблема с обновлением с версии 2.0.2
Угу. Написали уже и на офф форуме. Сейчас исправлю.
TechSide Там ошибка возникла уже в после-установочном процессе. То есть сама установка должна была пройти нормально. В вашем случае далее проблем быть не должно.
Все работает корректно?
Мы используем основные cookies для обеспечения работы этого сайта, а также дополнительные cookies для обеспечения максимального удобства пользователя.
Посмотрите дополнительную информацию и настройте свои предпочтения