• Насколько оправдано передавать данные пользователя из пхп в ноду через мемкеш?

    @BorisKorobkov Куратор тега PHP
    Web developer
    Если вопрос теоретический, то Memcache быстрее Mysql.

    Если практический, то при правильной бизнес-архитектуре разницы по скорости почти не заметите. Работать с Mysql проще и надежнее.
    Я бы все-таки кэшировал в самой ноде логины-пароли после обращения к БД. А про обновлении пароля или бане юзера - эту информацию из PHP пушить напрямую в Node с помощью https://github.com/Wisembly/elephant.io . Но эту оптимизацию можно оставить и на потом. Пока сделайте работающий прототип без кэширования с запросом в БД на каждый коннект.
    Ответ написан
    Комментировать
  • Нагрузка на сервер при выполнении скриптов на php в фоне?

    @BorisKorobkov Куратор тега PHP
    Web developer
    Грамотно сделанный сокет-сервер (рекомендую не на php, а на node.js) создает минимальную нагрузку даже при сотнях тысяч одновременных соединений. По нагрузке подойдет любой хостинг.
    Но обычно на шаред-хостингах либо вообще запрещены демоны, либо сильно ограничены по времени. Ну и node.js не везде есть. Поэтому не получится. Лучше возьмите любой VDS - это стоит от 300 руб/месяц. В данном случае жмотиться ради экономии 100 руб/мес - это нищебродство.
    Ответ написан
    Комментировать
  • Каким образов в mysql реализовать выборку вопросов отвеченных правильно?

    @BorisKorobkov Куратор тега MySQL
    Web developer
    Научитесь формулировать ТЗ правильно. Что считать "правильным ответом" при многовариантности?
    - 9 ответов из 10 правильных - это "правильно"?
    - все 10 из 10 правильных и 1 из неправильных - "это "правильно"?

    Update: если "правильно" - это все правильные вопросы и ни одного неправильного, то для каждого question надо сделать "правильный" отпечаток и сравнить его с отпечатком ответа юзера.

    "Правильный" отпечаток:
    SELECT question_id, GROUP_CONCAT(id ORDER BY sort ASC SEPARATOR '_')
    FROM cms_testing_answer
    WHERE is_correct = 1
    GROUP BY question_id

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

    Отпечаток ответа юзера - аналогично.
    Ответ написан
    4 комментария
  • Как сохранить cookie после очистки?

    @BorisKorobkov
    Web developer
    Есть пользователи, которые не гнушаться удалять эти куки почем зря

    ССЗБ.
    Нет кук - пусть авторизуются на вашем сервере заново.
    Ответ написан
    Комментировать
  • Как правильно организовать бизнесс-логику в Yii2?

    @BorisKorobkov
    Web developer
    Однозначно RBAC.
    А уже вариантов есть много. Например,
    Права 1го уровня: "смотреть", "создавать", "редактировать", "кастомизировать дешевый" (в bizRule проверять признак "самый дешевый"), "кастомизировать недешевый", "удалять".
    Права 2го уровня: "неавторизованный посетитель", "авторизованный покупатель", "менеджер", "админ".
    Признак "самый дешевый" хранить в БД у товара. При изменении любой цены пересчитывать все эти признаки.
    В контроллере: вызвать hasAccess с параметром ID товара.
    Ответ написан
    Комментировать
  • Почему появляются php файлы с редиректом?

    @BorisKorobkov Куратор тега PHP
    Web developer
    У злоумышленника есть доступ на сервер:

    - логин/пароль ftp. Сменить пароль. Использовать sftp. Лучше вообще не использовать пароль, а логиниться по ключу

    - уязвимость windows. Накатить все патчи. Лучше перейти на CentOs

    - инъекция на сайте. Из-за криворукого программиста такое часто бывает. На Тостере каждый второй пример кода
    - говнокод с дырами. Нанять грамотного разработчика и провести аудит (для начала автоматический, а потом и ручной).

    - логин-пароль от админки сайта. Сменить пароль. Использовать https. Обновить все сторонние модули (например, phpBb)
    Ответ написан
    Комментировать
  • ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO): что делать?

    @BorisKorobkov Куратор тега MySQL
    Web developer
    Пароль по умолчанию пустой.
    Возможно, вы неправильно набрали команду. Скопируйте именно эту: mysql -u root -p. На запрос пароля надо просто нажать Enter.

    Попробуйте запустить mysql_secure_installation.

    Если все равно не пускает - поищите пароль в логе: sudo grep 'temporary password' /var/log/mysqld.log.

    Если и этот вариант не подошел - возможно, устанавливаете из какого-то левого репозитория. Удалите sudo apt-get purge mysql*, выключите левые репозитории и установите заново sudo apt-get install mysql-server.
    Ответ написан
    4 комментария
  • Как в заголовок передать title и description?

    @BorisKorobkov
    Web developer
    Из контроллера - $this->view->title.
    Из вьюшки - $this->title
    Ответ написан
  • Почему символ _ не входит в выборку Regex?

    @BorisKorobkov
    Web developer
    Под это условие не попадают буквы, цифры, подчеркивание, пробельные символы.

    Вместо дублирования кириллицы в разных регистрах лучше добавить модификатор "i" (регистронезависимо)
    Ответ написан
    Комментировать
  • Как увеличить лимит подключений к скрипту PHP для Apache?

    @BorisKorobkov Куратор тега PHP
    Web developer
    Надо правильно проектировать приложение.

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

    Во-вторых, длительные скрипты не должны запускаться из веба. Их надо откладывать в очередь и обрабатывать кроном или демоном.
    Ответ написан
    1 комментарий
  • Как быть "мобильным" веб-разработчиком?

    @BorisKorobkov
    Web developer
    Капитан Очевидность подсказывает, что нужно уметь быстро устанавливать и настраивать всё необходимое. Вот что вам надо - то и устанавливайте. В Linux устанавливать программы удобно через sudo apt install .... Разворачивать проект - из своего репозитория. Сразу же разворачивание БД и автоматическая настройка конфига (например, cp, запросить логин/пароль, sed). В итоге получится один sh-скрипт.
    Ответ написан
    Комментировать
  • Насколько важно использовать mysqli_free_result?

    @BorisKorobkov Куратор тега PHP
    Web developer
    Желательно. Убирать за собой - это комильфо.
    Ответ написан
    Комментировать
  • Почему ноутбук видит флешку с убюнтой, а с виндой, нет?

    @BorisKorobkov
    Web developer
    ноутбук HP Compaq не видит флешку с виндой при загрузке ОС

    Не при загрузке ОС, а до загрузки ОС после BIOS.

    1. в BIOS не включена опция загрузки с флэшки. Или включена, но не первой.

    2. Флэшка не загрузочная. Если флэшка с Windows, то лучше создавать ее тоже средствами Windows. В другой ОС теоретически возможно, но нужно шаманить.
    Ответ написан
  • Как добавить пользователя сразу в базу нескольких сайтов?

    @BorisKorobkov Куратор тега MySQL
    Web developer
    Если все сайты на одном физическом сервере, и надо везде регистрировать юзера, то правильнее создать общую БД юзеров на этом же сервере. При этом у каждого сайта может быть своя БД с его контентом.
    Ответ написан
  • Как безопасно выполнить .sh из php?

    @BorisKorobkov Куратор тега PHP
    Web developer
    1. root права не нужны. Но для надежности лучше все-таки запретить exec/system

    2. количество php-процессов ни о чем не говорит. При любом их количестве как могут быть проблемы, так могут и не быть.
    Вместо процессов проверять надо, что на http-запросы приходит нужный ответ за нужное время.

    3. Количество памяти, процессов и прочего проверять лучше с помощью Nagios. Даже количество процессов - для этого добавьте свой sh-скрипт в /etc/nagios/nrpe.cfg
    Ответ написан
  • Все запросы с любого php файла переводить на index.php?

    @BorisKorobkov Куратор тега PHP
    Web developer
    try_files нужен, чтобы отдавать статику (css, js, jpg/png и пр.)

    func.php и прочие инклюды не должны быть доступны из web! Переместите их на уровень выше.
    Ответ написан
    Комментировать
  • Это нормально, когда подключение socket идет на каждой странице?

    @BorisKorobkov Куратор тега PHP
    Web developer
    Нормально.
    Нагрузка как клиенту, так и серверу не больше, чем загрузить какую-нибудь статик-картинку.
    Ответ написан
    Комментировать
  • Какая лучшая конфигурация idea 2017.1.4 для работы от батареи?

    @BorisKorobkov
    Web developer
    Ну, можно поотключать индексирование, подсказки, валидацию и прочее. Будет работать не 1 час, а 1 час и 5 минут. Вот только напишите меньше кода, да и на вылавливание ошибок потратите в 2 раза больше времени. Вам шашечки или ехать?

    Можно немного настроить ОС: выключить всякую анимацию, WiFi, Bluetooth.

    Более кардинальные советы: сменить ноут на более энергоэффективный или хотя бы аккумулятор на свежий.
    Ответ написан
    Комментировать
  • Как сделать, что бы файлы скачивались а не выполнялись?

    @BorisKorobkov Куратор тега PHP
    Web developer
    Настроить веб-сервер для этой папки на скачивание без запуска PHP. Например, в Nginx для этого надо прописать отдельный location.
    Ответ написан
    Комментировать
  • Yii2 как вывести по 1 уникальной записи по ключу?

    @BorisKorobkov
    Web developer
    мне надо вывести все уникальные группы из этой таблицы

    MyModel::find()->select(...)->where(...)->groupBy(...)


    и в detail view показать все рецепты которые к ней относятся

    MyModel::find()->where(...)
    Ответ написан
    Комментировать