• Как оптимизировать код с запросом?

    1) prepare и bind_param не нужно делать в цикле, можно один раз до цикла;
    2) скорее всего, можно вообще не делать запрос в цикле, а получить все данные одним запросом. Нужно смотреть на структуру таблицы и данных в ней;
    3) не понимаю, зачем закрывать подключение к БД, если вы его сразу используете дальше по коду. Кроме этого, вы неправильно его закрываете, close это метод, поэтому нужны скобки: ->close();
    4) нет необходимости экранировать входящие параметры, если вы используете подготовленные запросы (prepared statement);
    5) всё-таки лучше использовать json_encode а не собирать json вручную;

    P.S. пожалуйста, используйте отступы (табуляцию) в коде, его будет намного удобнее читать и вам и тем, кто отвечает на вопрос.
    Ответ написан
    2 комментария
  • Как правильно написать подготавливаемый запрос?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Плейсхолдерами можно подставлять только значения. Названия колонок, таблиц, баз данных не подставляются.
    P.S. А вообще, смотрите errno/error после каждой функции.
    Ответ написан
    3 комментария
  • Как правильно написать подготавливаемый запрос?

    DeyvHorni
    @DeyvHorni
    Примерно так
    $dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass);
    $stmt = $dbh->prepare("SELECT * FROM table where `time` > ? AND `time` < ? AND ticker = ?");
    if ($stmt->execute(array($minTime, $maxTime, $ticker))) {
      while ($row = $stmt->fetch()) {
        print_r($row);
      }
    }

    php.net/manual/ru/book.pdo.php

    а если нужно ограничить кол-во строк которые выводишь. Проще и правильнее лишние просто не доставать, а не считать сколько вывелось... offset limit
    Ответ написан
    Комментировать
  • Какое количество оперативной памяти у меня свободно?

    @MechanID
    Админ хостинг провайдера
    Разберу вывод free -m
    у вас свободно 97 мегабайт
    используется под буфера и кеши файловой системы 1768 мегабайт (из них 1589 мегабайт может быть выделенно новым или текущим процессам если они запросят память у ОС)
    Итого доступно для пользования 1686 мегабайт
    Ответ написан
    Комментировать
  • Какое количество оперативной памяти у меня свободно?

    Sanes
    @Sanes
    На графике с кешем указана. Фактически потребляется used 138
    Ответ написан
    Комментировать
  • Какое количество оперативной памяти у меня свободно?

    Melkij
    @Melkij
    PostgreSQL DBA
    linux ate my ram!/

    1686мб доступно. См. available в выводе free.

    И память kvm виртуалки с хоста мониторить невозможно. Хост ожидаемо видит, что гость использует всю память.
    Ответ написан
    Комментировать
  • Как увеличить время выполнения скрипта nginx PHP-FPM (debian 9)?

    Radjah
    @Radjah
    Большие дампы лучше импортировать непосредственно через клиент БД (mysql или удаленно HeidiSQL, например).
    phpmyadmin в этом плане крайне тормозной инструмент и подходит максимум для загрузки схемы, чтобы пустую базу подготовить для использования софтом.
    Ответ написан
    Комментировать
  • Что лучше выбрать OpenVZ или KVM для сайта (стандартного php mysql проекта)?

    opium
    @opium
    Просто люблю качественно работать
    из всех зол выбирай меньшее то есть квм
    Ответ написан
    Комментировать
  • Что лучше выбрать OpenVZ или KVM для сайта (стандартного php mysql проекта)?

    CityCat4
    @CityCat4
    Внимание! Изменился адрес почты!
    OpenVZ - это не полноценная виртуализация. Ядро Вы разделяете с прочими, кто работает в данный момент. Обновить его невозможно. Установить чего-либо, взаимодействующее с ядром (ipset например) - невозможно. Как мне сказали в одном саппорте - OpenVZ - это только для хранения данных (и все равно я не понял - как мне защитить сервак, даже если он только для хранения данных...)
    Ответ написан
    Комментировать
  • Что лучше выбрать OpenVZ или KVM для сайта (стандартного php mysql проекта)?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    KVM своих денег стоит. У OpenVZ масса ограничений.
    Ответ написан
  • Где ошибка в логике запроса?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Вот только запрос у вас должен показать не "каждую вторую запись с тикером Y1", а "все записи с тикером Y1, имеющие нечётные id". Это таки несколько разные вещи. Записей с нечётными id может не быть вообще.
    Ответ написан
    Комментировать
  • Будет ли изменение нагрузки на БД и сайт?

    402d
    @402d
    начинал с бейсика на УКНЦ в 1988
    во первых https://stackoverflow.com/questions/12864557/selec...
    аналогия тут такая у тебя рота солдат.
    select count() - быстро ответили 40. Так информация всегда в готовом виде
    select count() where - заглянули в списки - ответили
    а вот
    query и $mysqli_result->num_rows;
    уже по армейски
    select * - рота стройся на плацу
    в наличие столько то
    и все стоят ждут команду налево по одному бегом марш
    Ответ написан
    1 комментарий
  • Как корректно динамически обновлять несколько серий графиков?

    0xD34F
    @0xD34F
    Вместо того, чтобы создавать отдельные переменные под каждый набор данных, просто обходите массив series с помощью forEach. Надо ли перерисовывать график сразу, как только в какой-либо из наборов данных добавлена новая точка - не уверен. Лично я бы дожидался получения новых данных по всем наборам и только потом делал перерисовку. Конечно, если хотите, перерисовывать можно и при каждом получении новых данных.

    Также следует обратить внимание на ваш выбор использовать setInterval для организации постоянного обновления - что если один из запросов займёт сильно больше времени, чем вы ожидаете? Не получится ли так, что более новые данные будут добавлены раньше старых? Возможно, стоит делать так: запрос, по получении ответа - setTimeout на следующий запрос.

    Что до

    работает, но не всегда корректно <...> точно есть ошибки

    - это разговор ни о чём. Информации примерно ноль. Вам следовало рассказать, как проявляется эта некорректность.
    Ответ написан
    Комментировать
  • Как конвертировать/сохранить Unicode в UTF8?

    Melkij
    @Melkij
    PostgreSQL DBA
    Раз уж собираете URL вручную, то хоть следуйте стандарту. Параметры должны быть urlencoded. В js для этого есть encodeURIComponent
    Ответ написан
    Комментировать
  • Как настроить PhpStorm 2016.1.2+Openserver?

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


    Цель PhpStorm'a - предоставить IDE. Цель OpenServer'а - предоставить полноценную (до некоторой степени) среду разработки и выполнения PHP-скриптов/приложений/сайтов/etc. Помимо интерпретатора PHP, в OpenServer'е есть масса других модулей (программ), в зависимости от "комплектации": от различных баз данных, для всяких "офисов" и т.д. Это связано с тем, что в большинство проектов не ограничивается исключительно интерпретатором PHP, многим так же требуются различные БД, иногда хранилища (например, Redis или Memcached) и прочие инструменты.

    PhpStorm пишет - configuration php.ini file does not exist. Но php.ini там разумеется есть.
    Возможно, это связано с тем, что в путях содержится что-то отличное от латинских букв (иногда могут так же "мешать" пробелы в путях, хотя это бывает гораздо реже).

    Обычно, процесс выглядит следующим образом:
    0. Указывать путь до интерпретатор PHP не всегда обязательно или необходимо, иногда без этого можно вполне обойтись
    1. В папке, в которую установлен OpenServer, среди прочего, есть папка domains, в которой вы создаёте папку с будущим проектом (сайтом) и называете её, например, site1.local
    2. (Пере)запускаете OpenServer, крайне желательно это делать с правами администратора, т.к. он будет вносить изменения в файл hosts системы, что бы сайт стал доступен по соотв. адресу (в данном примере, по адресу: site1.local)
    2.1. Открыть проект так же можно через меню OpenServer'a: Мои сайты -> "Нужный сайт"

    Что бы проект открывался в PhpStorm'е по соотв. ("правильному") адресу, вместо встроенного веб-сервера - я думаю, нужно изменить какие-то настройки проекта в PhpStorm (какие именно - сказать затрудняюсь, т.к. никогда не пользовался таким способом работы с проектом).

    P.S. Для того, что бы отлаживать проект в разных браузерах, обычно используют различные BrowserSync'и, LiveReload'ы и т.п.

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

    be_a_dancer
    @be_a_dancer
    Backend/Fullstack Developer
    Кавычки экранируют символы.
    `обратные кавычки` используются тогда, когда тебе необходимо экранировать название столбца, если оно совпадает с зарезервированным ключевым словом.
    'Одинарные кавычки' следует использовать, когда ты пишешь даты и строки.
    "Двойные кавычки" следует использовать для написания непосредственного запроса.

    Пример
    "SELECT `name`, `email`, `registered_at` FROM users WHERE registered_at BETWEEN '23-12-2018' AND '26-12-2018'"


    Напоминаю. При запросе в базу данных из скрипта, особенно если ты используешь любые данные полученные от пользователя (от сессий и куки, до полей ввода), следует либо использовать подготовленные запросы в режиме эмуляции, либо перед вставкой данных в запрос осуществлять экранирование строки.
    Ответ написан
    2 комментария
  • Как правильно писать mysql запрос?

    qonand
    @qonand
    Software Engineer
    наклонные кавычки `` используются для экранирования служебных слов базы данных
    обычные '' для указания строк

    P.S. и отучитесь вставлять неподготовленные переменные в запросы, если не хотите в последствие проблем с sql-инъекциями
    Ответ написан
    Комментировать
  • Ошибка Row size too large?

    @remzalp
    Программер чего попало на чем попало
    Длина всей строки получается:
    id=4+last_access_time=4+34x255=8 678 байт.
    упёрлись в технические ограничения.

    Можно вылечить как советуют
    ALTER TABLE `user_settings` ROW_FORMAT=DYNAMIC;

    Ключевой вопрос - А ВАМ НАДО СТОЛЬКО ХРАНИТЬ ОДНОЙ ТАБЛИЦЕЙ?
    Исходя из чего выбиралась такая длина данных?
    varchar может быть использовать?
    Ответ написан
    4 комментария