Ответы пользователя по тегу Веб-разработка
  • А что если писать сайт вообще в одном файле?

    Wolfnsex
    @Wolfnsex Куратор тега CSS
    Если не хочешь быть первым - не вставай в очередь!
    Сказать по правде, Вы немного странно ставите вопрос... мне кажется, актуальнее было бы уточнить, о причинах, по которым нужно объединять файлы в один.

    Понятно, что будет неудобно работать, но это допустим не важно. Привыкнется)))
    Неудобно работать кому, Вам, или браузеру? Если браузеру, то за него не беспокойтесь, он парень сильный, справится. Если Вам - то есть сборщики проектов, коих как грибов в лесу. На крайняк можно написать свои 20 строк кода.

    Речь не идет про крупный проект, портал или магазин. Простой одностраничник)
    Вопрос звучит примерно как: "я тут приехал в какую-то деревню (город с населением 200тыс. человек), стоит ли там соблюдать правила дорожного движения и законы? Это же не миллионник и даже не мегаполис..."

    Дело не в том, скольки-страничник сайт, а в причинах, которые послужили предпосылкой к объединению скрипто-стилевого мусора в один файл. Основных причин было несколько:

    1. Большой файл грузится быстрее, чем много маленьких, по тому, что:
    а) Обращение к дисковой системе происходит 1 раз
    б) Исчезает промежуточный мусорный обмен трафиком между сервером, на загрузку каждого дополнительного файла

    2. Особенность браузеров, работающих по поротоколу HTTP 1.0/1.1 заключается в том, что они не могут открывать более 16-32 соединений (если мне память не изменяет, точные цифры не помню). Это значит, что одновременно более 16-32 файлов скачиваться не будет. А теперь представьте, что у Вас на "одностраничнике" штук 300 спрайтов, на всякие соц. сети, иконки, стрелки и пр. лабуду, и каждый будет загружаться отдельно...

    Я думаю, Вы уже знакомы с протоколом FTP... Попробуйте как-нибудь, ради интереса загрузить на сервер любую CMS, в которой 5-15тыс. файлов по FTP, в распакованном виде. А потом попробуйте упаковать все эти файлы в архив, с нулевым сжатием (TAR или ZIP без сжатия), загрузить на сервер и распаковать. Даже на самом "мёртвом" сервере, даже с учётом времени на распаковку, процедура с архивом обычно проходит в несколько (иногда десятков) раз быстрее, чем загрузка каждого файла по одному. В браузере разница не настолько критична, принцип тот же.

    Среди прочего, хочу отметить, что для протокола HTTP/2, который пока поддерживают ещё не все браузеры (хотя таковых и большинство) и далеко не все хостеры и админы осилили его интеграцию, проблема уже не так актуальна. Но одна из причин, по которой HTTP/2 позволяет ускорить загрузку заключается как раз в том, ограничение с пулом запросов было решено.

    Так же, сжатие всех скриптов в один - позволяет решить проблему порядка загрузки, и добавить скрипту флаг async, что было довольно актуально для меня в ряде случаев. А CSS - тем более грузятся по порядку, т.к. это каскадные таблицы, и как бы Вы их там не вращали, браузер априори будет их читать линейно и так же линейно применять, именно в том порядке, в котором они были указаны к загрузке. И в этом случае, сочетание протокола HTTP/1.0|1.1 и отсутствие многократного дёргания сервера, довольно очевидно.
    Ответ написан
    Комментировать
  • Как сделать надежную панель администрирования для сайта?

    Wolfnsex
    @Wolfnsex Куратор тега PHP
    Если не хочешь быть первым - не вставай в очередь!
    С учётом возможностей Symfony3 "искаропки", можете взять готовую аутентификацию из нее. А если её не хватит, в Symfony3 есть целый арсенал разных средств безопаности/авторизации/аутентификации, в виде "отдельно стоящих" (переносимых) библитек, вплоть до "файрволов".

    Ссылка на пакет и на Git-репозиторий. Ссылка на его документацию есть на странице репозитория.
    Ответ написан
    1 комментарий
  • Как узнать внешний ip?

    Wolfnsex
    @Wolfnsex Куратор тега Веб-разработка
    Если не хочешь быть первым - не вставай в очередь!
    1. Обратиться в поддержку провайдера и купить него внешний/"Белый IP", или получить подробности по этой теме.
    2. Вывести ноутбук в DMZ (демилитаризованная зона) и/или настроить на роутере переадресацию всех входящих соединений на 80-ый порт на IP'шник ноутбука. 99% роутеров работают в режиме NAT, благодаря которому, пакеты из вне, самостоятельно не могут (в основном не могут) достигнуть получателя, если он сам не инициировал соединение. По другому это ещё может называться "проброс портов". Инстуркции можно найти в руководстве к роутеру.

    P.S. Порядок действий именно такой.

    P.P.S. Если IP уже белый, но динамический - можно воспользоваться сервисами типа тех, что описываются например здесь.
    Ответ написан
    Комментировать
  • Как Вы обрабатываете картинки перед загрузкой на сайт?

    Wolfnsex
    @Wolfnsex Куратор тега Веб-разработка
    Если не хочешь быть первым - не вставай в очередь!
    Довольно просто это сделать. Точных рекомендаций давать не будут, т.к. далеко не факт, что мои личные предпочтения подойдут конкретно Вам, но по запросу "программа для пакетной обработки изображений" - Вы найдете достаточно много разных интересных штук... В том числе, наверное, 2/3 из этого списка программ, будут иметь профили "оптимизировать для веба" или набор поочередно накладываемых на картинку фильтров/обработчиков.

    Лично я пользуюсь самописным скриптом, который прямо на сервере обрабатывает изображения с помощью JPEGtrim, PNGOptim и так далее, не только для изменения размеров картинок, но и для вычистки с них всякого дерьма, типа EXIF и пр., которое для сайта конкретно - явно не нужно (у нас не фотобанк).

    Например тут, их целая дюжина. Выбирайте!
    Ответ написан
    Комментировать
  • Как спарсить число между тегами и текстом?

    Wolfnsex
    @Wolfnsex Куратор тега PHP
    Если не хочешь быть первым - не вставай в очередь!
    Ну например так:
    $a = "Строка с числом 55 и текстом";
    $b = (int)preg_replace('/\D/', '', $a);
    var_dump($b);
    Ответ написан
  • В каком месте MVC-концепции веб-приложения нужно фильтровать HTML-спецсимволы?

    Wolfnsex
    @Wolfnsex Куратор тега Веб-разработка
    Если не хочешь быть первым - не вставай в очередь!
    Не думаю, что у Вашего вопроса, если безусловный и едино правильный ответ. Прежде всего, всё зависит от фреймворка, которым Вы пользуетесь, соответственно, в разных фреймворках есть разные реализации таких механизмов.

    Например, в Symfony2/3 есть такая штука как "DataTransformers", которая преобразует данные при сохранении/извлечении по заданной формуле. В Laravel 5.x - есть "Мутаторы", которые произволят аналогичные манипуляции с полями модели. Так же в зависимости от фреймворка, могут быть разнообразные фильтры, преобразователи и так далее.

    Если Вы например используете шаблонизатор Twig - в нем есть масса готовых фильтров + возможность писать свои собственные, фильтруя данные перед их выводом. И, шаблон (вьюшка) - есть место для фильтрации данных не лучше и не хуже других, если Ваш шаблонизатор имеет такой механизм.

    Но, давайте рассуждать логически. Вам когда-нибудь будет нужен текст 100% оригинал? То есть, такой текст, который бы сохранил все теги, которые ввёл пользователь, все пробелы (в том числе и лишние), регистр этих тегов и пр. подробности/особенности того, что пользователь ввёл?

    Если да, но эти данные Вам будут нужны редко, для какой-то статистики например - то сохраняйте их в каком-то отдельном поле в БД, типа "user_text_original".

    Если да (данные нужны в 100% оригинальной консистенции), и эти данные Вам будут нужны часто - фильтруйте их там, где Вам позволяет фреймворк или там, где они нужны уже отфильтрованные. Если они Вам зачем-то нужны в отфильтрованном виде внутри контроллера - фильтруйте их в контроллере, до того, как они там понадобятся, либо до того, как они попадут в контроллер (в модели). Если они Вам в контроллере не нужны и Вы можете фильтровать данные внутри View'шки - фильтруйте их там, без проблем.

    И, самый вероятный вариант:
    Если же, данные в их оригинальном виде Вам не нужны в 99% случаев, а нужны Вам уже отфильтрованные данные, с которых вычищены все лишние HTML-теги например, то возникает резонный вопрос: зачем постоянно гонять фильтры туда-суда, сохраняйте сразу отфильтрованные данные в БД, в соответствии с возможностями и механизмами Вашего фреймворка (как я уже писал выше, это могут быть DataTransformer'ы, Мутаторы и т.д.). Так как Вы удаляете из данных теги - их объём сокращается (это плюс), и так как Вы дёргаете фильтр всего 1 раз, сокращается нагрузка на систему (это так же плюс). Но такой расклад будет работать только в том случае, если сохраненные данные будут получаться чаще, чем сохраняться. То, например, если Вы выводите на страницу комментарии, то каждая независимая единица комментария, должна быть показана хотя бы 2 раза. То есть, если у Вас есть 1000 комментариев всего, то обработаться/отобразиться за всё время жизнедеятельности сайта, должно не менее 1000 комментариев, иначе фильтр будет убыточен с точки зрения производительности (такой вариант мало вероятен, но гипотетически возможен, что у Вас данные добавляются чаще, чем отображаются/обрабатываются хотя бы раз).

    Я надеюсь, Вы поняли мысль, которую я хотел донести. MVC - это модель архитектуры приложения, довольно общая. В ней нет строгого деления или описания каких-то отдельных менанизмов, вроде обработки запросов или фильтрации данных. К тому же, MVC как архитектура/концепция была описана в 1979 году, несколько раньше чем появилось понятие "веб" или уже тем более "современный веб".

    P.S. Я бы конечно мог расписать всё ещё более подробно, но и так много получилось...
    Ответ написан
    2 комментария
  • Как работает Java, Python и другое в веб-разработке?

    Wolfnsex
    @Wolfnsex Куратор тега Веб-разработка
    Если не хочешь быть первым - не вставай в очередь!
    Смотря, что Вы хотите понять... В целом, механизм ровной такой же как и у ПХП. Веб-сервер отправляет запрос, на специально подготовленный сервер, который в свою очередь выполняет код и возвращает результат обратно веб-серверу, который в свою очередь возвращает этот результат браузеру... Разницы между тем, какой "там" язык - в принципе нет особой.

    Если совсем примитивно, то представьте себе какую-то консольную программу, которая выводит что-то на экран... Только в нашем случае, она выводит это "что-то" не на экран, а в браузер, с помощью какой-то прокладки уровня веб-сервер <- прокладка -> программа...
    Ответ написан
    Комментировать
  • Как каждому зеркалу (alias) прикрутить свою главную страницу?

    Wolfnsex
    @Wolfnsex Куратор тега Веб-разработка
    Если не хочешь быть первым - не вставай в очередь!
    У меня два варианта:
    1. Вписать в сам index.php проверку на текущий URL/Домен и отсутствие в нем доп. параметров и сделать простую конструкцию типа
    if ($_SERVER['HTTP_HOST'] == 'domain1.com')
    {
        require('domain1.html'; exit;
    }
    //Остальной код


    Либо, попробовать как-то вот так:
    <If "%{HTTP_HOST} == 'www.example.com'">
    DirectoryIndex domain.html
    </If>
    *за правильность не ручаюсь, возможно оператор сравнения на равенство в .htaccess пишется как-то по другому...

    Пример взят отсуда, раздел Canonical Hostnames.
    Ответ написан
    1 комментарий
  • Меньше стек технологий, больше шанс устроиться на удаленную работу?

    Wolfnsex
    @Wolfnsex Куратор тега Веб-разработка
    Если не хочешь быть первым - не вставай в очередь!
    Если я буду расписывать все возможные варианты без исходных данных, на тему того, что у Вас уже есть и к чему склоняетесь лично - то у меня голова вскипит. Если хотите - добавляйтесь в скайп, обсудим Ваш вопрос "по факту". Все желающие могут добавиться, если хотите - организуем конференцию на эту тему.

    Меньше всего технологий, пожалуй, это будет Ассемблер + C/C++, там одна основная технология - очень чёткое понимание всех принципов работы машины от А до Я. Но, на начальном этапе, без грамотного преподавателя, Ваше обучение может затянуться на годы. К тому же, с очень большой вероятностью у Вас не получиться отвертеться от других технологий, например, от баз данных. Хотя, есть конечно вариант устроится писать на чистом Си (или си-подобном языке), например, системный софт, допустим это будут программные виртуализаторы, но в этом случае Вам придётся знать не только сам язык, но и принципы работы целой кучи различной аппаратуры на самом низком уровне, например очень чётко понимать что такое сетевая карта, что такое пакет, что такое буфер памяти, что такое фрейм и так далее, вплоть до устройства ядра Linux/BSD/etc.

    Другой вариант Java - но... тут тоже не всё так сладко. Хотя нет, наверное, меньший стек из мне известных - это пожалуй, C#-разработчики, не редко 1 разработчик пишет в каком-то одном вполне конкретном ключе, без вёрстки и настроек серверов и прочих "прелестей" и даже без баз данных, иногда. Но у C# - довольно большой "внутренний стек" и вот так вот с наскока, взять и писать на C# - не получиться, т.к. C# - это не только язык, но и огромная библиотека классов и готовых решений, поверх которой он построен (на которую он "натянут").

    Так же, есть случаи, когда профессиональные PHP разработчики работают только с бэк-эндом, т.е. PHP + База данных. Но обычно в таких проектах объёмы БД исчисляются чуть ли не петабайтами, а обёъмы когда иногда достигают сотни мегабайт... за то, довольно "узкий стек".

    В целом, мне встречались вакансии, и довольно не редко, где требуется человек "без лишнего ума", который знал бы как на 1.5 CMS'ках "побыстрому запилить сайт" и натянуть и возможно подправить немного готовый шаблон. Зарплата и уровень развития в таких компаниях и на таких вакансия - соответствующие.

    И, пожалуй да, наверное самый просто вариант, это будет PHP + CMS "1с Битрикс". Это довольно популярная CMS, на довольно популярном языке, состоящая чуть менее чем полностью из "странно написанного кода" (мягко говоря), страшно тормозная, требующая специфических настроек сервера, и в идеале как минимум VPS, что бы сайт подавал признаки жизни. Но, не смотря на всё это - это довольно популярная в бизнес-сфере CMS (о причинах её популярности можно написать целую книжонку). То есть, учите PHP, учите 1с-Битрикс -> Профит, Вы битрикс-разработчик, знания всего остального в 95% случаев не обязательны.

    Ну и ещё пожалуй, можно рассмотреть вариант изучения самого 1с (1с Бухгалтерия например). Я как человек сам плотно столкнувшийся с этой сферой - могу сказать, что глобальных знаний от таких разработчиков не требуется, ну кроме основ экономики и бух. учёта. И работы, в т.ч. удалённой - у них хватает. Более того, даже язык программирования, с которым Вам придётся работать - русифицирован, во всех смыслах этого слова.
    Ответ написан
    12 комментариев
  • Вывод taxonomy через foreach?

    Wolfnsex
    @Wolfnsex Куратор тега PHP
    Если не хочешь быть первым - не вставай в очередь!
    Думаю как-то так:
    if (count($cur_terms)) {
         foreach( $cur_terms as $cur_term )
    }


    вообще, нужно бы проверить, что в переменной $cur_terms в тот момент когда возникает ошибка, и добавить проверку.
    Ответ написан
  • PHP фреймворк для начинающего разработчика?

    Wolfnsex
    @Wolfnsex Куратор тега PHP
    Если не хочешь быть первым - не вставай в очередь!
    Фреймворков в целом, которые достигли должного уровня популярности и народного признания - не так уж много (если говорить о PHP-фреймворках).

    Для начинающего, с целью понять сущность MVC, "пощупать" некоторые аспекты фреймворка, такие например, как загрузка библиотек и пр. подобности, я бы порекомендовал Вам CodeIgniter. Отличная документация, довольно много людей, кто сможет Вам ответить на возникающие вопросы, есть документация на русском. А так же, минимальное количество "лишнего" из коробки, например, шаблонизаторов (которые Вы можете самостоятельно подключить, если очень хочется).

    После этого фреймворка, промежуточным, можно было бы считать Kohana, но, он что-то то "умирает", то снова "воскресает"... С документацией на него, по моему, всё так же плохо (читай "не очень хорошо") как и всегда... но, по нему есть несколько неплохих видео-уроков.

    Суда же можно отнести Yii, на мой взгляд, он застрял где-то между "большими" и "маленькими" фреймворками. Маленьким его уже не назовёшь, по ряду признаков, а до большого и целостного - он ещё не дотягивает. Но, он довольно популярен на просторах бывшего СССР (по понятным для многих причинам), в виду чего имеет довольно большое русскоговорящее сообщество и целую толпу ярых фанатов.

    Далее, в обязательном порядке будет идти Laravel - превосходная документация, примеры и фантастическое количество видео-уроков (если хорошо понимаете английский). Отличный фреймворк собранный на базе Symfony. Относится уже к "большим".

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

    P.S. Я понимаю, что Вы спрашивали "какой фреймворк учить первым?", а не какие они бывают вообще. Но, дабы предостеречь Вам от вопросов типа "какой фреймворк учить вторым?" или "почему Symfony в роли первого фреймворка так тяжело изучать?" и массы прочих подобных - озвучил одни из самых популярных фреймворков в мире веб-разработок в ракурсе PHP.
    Ответ написан
    1 комментарий
  • Как правильно спроектировань БД?

    Wolfnsex
    @Wolfnsex Куратор тега Веб-разработка
    Если не хочешь быть первым - не вставай в очередь!
    Есть две таблицы. Таблица с этими товарами и таблица с брендами. Эти две таблицы связаны друг с другом через третью таблицу.

    У вас один товар может иметь сразу несколько брендов?

    Я так понимаю надо сделать таблицу соотношений, где два поля - id_товара и id_его аналога
    Допустим у товара с ID 1 есть три аналога - получается на один товар три записи. А у этого аналога в аналогах - товар с ID 1 и оставшиеся два товара. Уже 6 записей. В общем что то мне такое решение не нравится.

    В целом, это вполне нормальная практика, по крайней мере, с точки зрения логики. Например, "лампочка А", логически может быть заменена на "лампочка Б", но обратная замена может быть не целесообразной, по каким-то признакам. Так же, при таком раскладе Вы сможете сортировать вывод аналогов по степени "рекомендуемости" их применения, на каждый товар и так далее. Но, у этого подхода безусловно есть и недостатки, в частности, это избыточность данных, дополнительные телодвижения по добавлению аналогов в каждый товар, лишнее место на диске, раздувание БД и так далее.

    Если же все товары между собой являются абсолютными аналогами друг-друга, есть альтернативный подход. Он заключается в том, что вы создаёте какую-то группу аналогов, например, в таблице analog_groups, каждая запись в которой = 1 группа аналогов. Далее, Вы указываете в товаре, к какой группе аналогов он принадлежит, это можно делать как по ID группы, так и по её заголовку (или любому другому параметру, который Вы к ней добавите) или по параметру id_группы_аналогов у любого другого товара, который в эту группу уже входит.

    Особенности такого подхода:
    а) Отсутствие избыточности данных
    б) Все товары в одной группе аналогов всегда будут аналогами для всех остальных товаров в этой же группе
    в) Нам не нужно будет делать множество одинаковых телодвижений, постоянно перелинковыая аналоги товаров друг у друга
    г) Экономиться место на диске и не раздувается БД
    д) Мы не можем выставить сортировку или приоритеты вывода аналогов для каждого отдельно товара без жестких костылей
    Ответ написан
    5 комментариев
  • Какие есть системы учета данных (клиентов, заказов, выполненных работ)?

    Wolfnsex
    @Wolfnsex Куратор тега Веб-разработка
    Если не хочешь быть первым - не вставай в очередь!
    CRM'ок написанных специально для веб-студии, я думаю, либо не существует, либо довольно незначительное количество, так как бизнес-процессы веб-студии, на уровне CRM - мало чем отличаются от подобных процессов других компаний. Вы можете выбрать наиболее удобную систему по своему усмотрению, из десятков представленных и/или ознакомиться с уже готовыми обзорами.

    От себя могу добавить, что в данный момент обороты набирает система "Битрикс24", и вроде бы как, по отзывам коллег, жить с ней можно + есть бесплатная версия на ограниченное кол-во пользователей.

    P.S. В своё время, столкнувшись с аналогичной проблемой и спецификой нашей работы (основная часть наших заказчиков - довольно не плохо разбирается в исходном коде и отлично знают, что хотят получить на выходе), после многочисленных попыток скрестить весь зоопарк в единую систему (RedMine'ы, CRM'ы, GitLab'ы, BugZilla'ы и Mantis'ы и прочие продукты) - мы написали свою систему, потратив на это около двух лет работы.
    Ответ написан
    Комментировать
  • Как вывести запись из БД?

    Wolfnsex
    @Wolfnsex Куратор тега PHP
    Если не хочешь быть первым - не вставай в очередь!
    В целом Вам уже предложили верное (по крайней мере, логически верное) решение. Но лично я вижу у Вас два ключевых момента:

    1. Зачем Вам получать данные из базы, которые только что, туда же и записали? Тем более, таким, относительно извращенным образом, и тем более в 2 запроса (запрос + вложенный запрос). Если нужно получить последнюю запись из базы, достаточно сделать запрос типа:
    SELECT * FROM table ORDER BY id DESC LIMIT 1;
    Так мы получим последнюю запись, причем не ту, которую мы туда вставили, а ту, которая физически будет последней на момент выполнения запроса, что полностью аналогично Вашему варианту, но в 1 запрос (без подзапросов).

    Есть ещё вариант запроса, в один запрос:
    SELECT * FROM table WHERE id = LAST_INSERT_ID();
    По этому варианту, не могу точно сказать что мы получим, последнюю существующая запись в БД на момент выполнения запроса, или конкретно последнюю вставленную нами запись в БД... но работает он точно не хуже Вашего примера :)

    1.1. Почему бы нам сразу не выводить те данные, которые мы только что записали в БД? Ведь это как раз те же самые данные, которые нам и нужны, но они уже получены.

    2. Обычно, в такой ситуации, приводят вывод var_dump() (или аналогичной функции), что бы понять, почему именно данные не выводятся. А что бы это понять, нужно сначала выяснить, что у нас в переменной вообще... по крайней мере, это может помочь другим разработчикам, а Вы сможете более точно сформулировать вопрос, например, "ожидалось, что в результате будет скалярный тип - а там почему-то курсор результата запроса из БД". То есть,
    <?php
    var_dump($result);
    //вместо
    echo $result;

    - сильно облегчит решение подобных задач в будущем.
    Ответ написан
    1 комментарий
  • Как сделать редирект на русскую и английскую версию сайта?

    Wolfnsex
    @Wolfnsex Куратор тега PHP
    Если не хочешь быть первым - не вставай в очередь!
    Среди прочего, браузер обычно сам выдаёт набор предпочитаемых пользователем языков, практически готовое решение + список "русскоговорящих" языков есть тут. Но если очень хочется именно по IP и/или браузер не прислал набор предпочитаемых языков (*я бы в этом случае просто перекинул на EN), то можно воспользоваться готовым решением для PHP.
    Ответ написан
    Комментировать
  • Как правильно проверить истечение платной подписки пользователя?

    Wolfnsex
    @Wolfnsex Куратор тега PHP
    Если не хочешь быть первым - не вставай в очередь!
    Всё зависит от того, как построена логика Вашего приложения или сайта. +1 запрос (а скорее даже не запрос, а доп. условие на что-то), вида:
    SELECT IF ((NOW() + INTERVAL 15 DAY) > row_date_value, 'that', 'then') AS result

    -- особых проблем не добавит, такие расчёты на уровне БД ведутся довольно быстро, к тому же, как можно заметить, в этом примере нет обращения к таблицам непосредственно, мы берём уже заранее готовое (полученное) значение.

    Но, с другой стороны, контролировать логику работы на уровне БД, пожалуй не самое практичное решение. В 99% случаев, есть более правильные механизмы реализованные на уровне фреймворка, так же как например, авторизация. Вы же не проверяете можно ли пользователю создавать запись новостей на сайте, на уровне БД?

    В частности, в зависимости от системы/фреймворка, подобная логика проверок и валидаций обычно встроена и оптимальным решением будет использовать именно её (как именно она устроена, можно посмотреть на примере модуля авторизации Вашей системы).

    Если же вопрос стоит исключительно в критичность доступности данных, в частности, эти данные нужно получать "молниеносно", а дата до которой продлена подписка - лежит где-то глубоко в БД и постоянные проверки сильно нагружают файловую систему сервера - можно воспользоваться временными таблицами которые хранятся в памяти, или закэшировать эти данные Redis или Memcached и получать их оттуда максимально быстро с минимальной нагрузкой на сервер.

    Если вопрос состоит в том, как лучше сверять даты на уровне "контроллера" (или чего-то ему аналогичного) - Вы можете перевести дату в число Unix-timestamp и сравнивать два числа, быстро и удобно.
    Ответ написан
    Комментировать