Ответы пользователя по тегу MySQL
  • Замена плагину query_response_time в MySQL?

    Acuna
    @Acuna
    Заполнил свой профиль
    Вместо этого они расширили Performance_Schema и теперь нужно вручную брать данные из нее и слать значения куда надо, тут хорошая статья.
    Ответ написан
  • Что если несколько пользователей одновременно обратятся к скрипту?

    Acuna
    @Acuna
    Заполнил свой профиль
    Так ведь скрипт - это тот же index.php, то есть сам сайт по сути) Если уж совсем на пальцах, то сервер - это папка, где хранятся файлы, а браузер просматривает эти файлы (это и есть HTTP), что произойдет если миллион человек запросят файл index.php? Сервер им его отдаст, ибо это просто его просмотр. Это не многозадачность, это просто обращение к файлу. Другой вопрос если этот скрипт что-то пишет в другой текстовый файл (не в БД, БД это как раз многозадачность), то там будут возникать блокировки и вообще что угодно, вплоть до его повреждения. Но это уже из другой области вопрос, а вы про HTTP спрашиваете.
    Ответ написан
  • Можно ли заменять в SQL запросе ' на "?

    Acuna
    @Acuna
    Заполнил свой профиль
    В плане самого вопроса - можно, почему нет, у меня все работает годами без проблем, другой вопрос что на определенном этапе проект разрастется до того, что нужно будет переходить на PostgreSQL, там западло и начнется, так как она принимает только одиночные кавычки, так что лучше изначально использовать одиночные.
    Ответ написан
  • Как правильно вывести комментарии с записью?

    Acuna
    @Acuna
    Заполнил свой профиль
    Самое изящное решение, чтобы как в варианте выше не тянуть за каждой записью кучу комментов (ибо представляете, сколько тогда будет запросов, если на странице будет, например, 20 записей, к каждой из которых добавлено по 10-20 комментов) заключается в том, что в таблице нужно создать колонку `parent` и заносить туда единицу, если коммент добавляется из поля ввода новой записи, иначе, если из поля, открываемого по ссылке "Ответить" - 0. Это будет означать по сути ответ на родительский коммент, который и является записью на стенке (ибо чем не запись? Текст есть, картинка есть). При выводе комментов просто выводите записи со значением `parent` = 1 другим шаблоном, например comment_parent.htm, если шаблонизатор у Вас свой - типа с серым фоном, более крупным текстом, и т. д. А комменты - comments_answer.htm. В БД создаете колонку `thread_id`, куда заносите `id` коммента, если это запись, и его же, при добавлении коммента к ней, просто получая `thread_id` родительского коммента. И самое главное - при выводе сортируйте их по thread_id и id коммента одновременно:

    ... AND `position` <= "3"
    ORDER BY `thread_id` DESC, `id` ASC
    LIMIT 0,20

    Это поможет сгруппировать их в нужном порядке, причем не прибегая к GROUP BY, выводя помимо самой записи три последних коммента к ней. Писал экспромтом, реализовал относительно давно, детали опустил, но главное, что суть передал. При наличии определенных навыков и главное понимания сути это все реализовывается относительно просто. Для того я саму суть и изложил, что бы Вы поняли сам принцип. А реализация осуществляется конкретно для проекта.
    Ответ написан
  • Как привести json к geojson в mysql?

    Acuna
    @Acuna
    Заполнил свой профиль
    Увы, насколько мне известно, мускул может хранить данные только в json, поэтому хранить нужно в нем, а доставать для работы и конвертировать в geojson нужно на php. Есть неплохая библиотека для этого:
    https://github.com/bmcbride/PHP-Database-GeoJSON/b...
    Ответ написан
  • Медленный запрос SQL, как его оптимизировать?

    Acuna
    @Acuna
    Заполнил свой профиль
    А что мешает из каждой таблицы удалять нужные строки отдельными запросами? Ведь это буквально доли секунды на каждый запрос, даже если индексов вообще нет. Ну и да, индексы проставить нужно в любом случае.

    P. S. Ну а вообще, сколько я вижу дебри OpenCart, все больше склоняюсь к мысли, что ее разработка началась еще когда разраб учился в школе... Грустно это все...
    Ответ написан
  • Я хочу хорошую библиотеку на PHP для MySQL. Я зажрался, или такое есть и активно используется?

    Acuna
    @Acuna
    Заполнил свой профиль
    Вы не поверите, но существует PDO, это и есть та библиотека, которую Вы и хотите: php.net/manual/ru/intro.pdo.php Умеет даже SSL. Притом абсолютно дефолтная. И не благодарите)
    Ответ написан
  • Как сделать проверку пустого поля в таблице mysql php?

    Acuna
    @Acuna
    Заполнил свой профиль
    if ($_GET['do'] == 'catalog' and isset ($_GET['company'])) {
    
       $id = (int) $_GET['company'];
    
       $query = "SELECT * FROM `organizations` WHERE `id` = '".$id."' LIMIT 10";
    
       $res = mysqli_query ($query);
    
       while ($row = mysqli_fetch_assoc ($res)) {
         
         if (!$row['site'])
         echo 'Нет';
         else
         echo 'Есть';
         
       }
      
    }


    Конструктивные замечания:

    1) (int) работает быстрее, чем intval ()
    2) Достаточно просто проверять переменную на ложность, а не на пустоту, ибо там может храниться все что угодно, не обязательно пустота.
    3) Поля и колонки должны быть в кавычках.
    4) Фигурные скобки не обязательны, если проверяется всего одно условие.
    5) Пользуйтесь переносом строк. Всегда. Это улучшает читаемость кода.
    6) Слова "Нету" не существует.
    Ответ написан
  • Какая бд выдержет нагрузку в 10к запросов в минуту?

    Acuna
    @Acuna
    Заполнил свой профиль
    Позвольте-с, а чем Вы руководствовались, решая, что "mysqli использовать смысла нету в наше время"? Сам MySQLi альтернативы не имеет в рамках выполняемых им задач, может быть Вы имели вообще NoSQL-решения? Тогда да. Только это разные вещи. Все, что Вам предлагают в комментах - это SQL-решения. Просто реально интересны мотивы, когда списывают нормальные технологии по незнанию. Это как переписать проект на объектах на процедуры, располагая только неверно страктованным утверждением, что это прибавляет производительности.
    Ответ написан
  • Какие есть книги хорошие книги на английском языке по программированию PHP + MySQL?

    Acuna
    @Acuna
    Заполнил свой профиль
    Писал тут уже по этой теме не один раз. Книги Вам мало чем помогут, ибо в любом случае самый эффективный способ разучивания языка (любого, не обязательно программирования) - это практика. Много. С параллельным штудированием php.net. Сей ресурс должен быть Вашей настольной книгой. И так как практики должно быть не много, а очень много - займитесь разработкой сложного проекта. Да, прям так сразу. Постепенно учитесь писать интернет-магазин, полноценный торрент-трекер, а лучше сразу свою CMS. Качество кода Вашей поделки оставит желать лучшего, да и скорее всего Вы никогда даже не выкатите ее в продакшн (хотя свою CMS я все-таки выкатил, когда писал ее все свое время учебы в универе), постепенно Ваш опыт будет расти и Вы будете только и заниматься ее рефакторингом, да и ценность она будет иметь разве что историческую, однако все это даст Вам ценнейший и не сравнимый ни с чем опыт программирования в бою. А там уже и работать сможете идти после этого. А теория без практики мало чем ценна. Наглядный пример - лекции в универах. Какие у нас теперь специалисты? Вот-вот.
    Ответ написан
  • Будет ли работать mysql с нагрузкой примерно триллион записей?

    Acuna
    @Acuna
    Заполнил свой профиль
    Если у Вас чисто теоретический вопрос - тогда так и отвечу без конкретных реализаций))) Работать будет относительно быстро, если регулярно осуществлять партицирование или сегментирование (почитайте в интернетах, очень полезная вещь даже для небольших БД). В кратце - это разделение всей БД по партициям, с которыми мускулу намного легче работать, чем с одной крупной БД. Сам мускул предоставляет отличные инструменты для этого. Более того, он сам определяет в какой партиции хранятся нужные данные уже в момент запроса. Так же при этом не накладывается совершенно никаких ограничений в работе с джоинами и индексами. Единственный минус заключается в том, что его нужно осуществлять вручную. Хотя для этого достаточно запускать простенький скрипт на кроне, который будет выполнять около сотни запросов партицирования всего раз в месяц. Нагрузки он этим почти не создаст, однако сам мускул Вам будет очень благодарен, что вы разгружаете его от ненужной работы по тасканию тяжеленных баз. Еще иногда с связке с ним реализуется шардинг, когда автоматически создается новая таблица в БД, когда в старой накопилось какое-то количество записей (как правило 10 000), c именами table1, table2, table3 и т. д. В этом случае разные БД можно вообще разнести по разным серверам, однако в большинстве случаев из-за некоторых субъективных факторов его реализация как правило неосуществима, поэтому в большинстве случаев повсеместно используется партицирование.
    Также, как уже было сказано ранее - неизвестно, в каких условиях будет пользоваться Ваша БД: если запросов на добавление больше, чем на чтение - нужно пользовать MyISAM, иначе InnoDB, разница замечается. Сильно.
    Ответ написан
  • Как увеличить скорость загрузки сайта?

    Acuna
    @Acuna
    Заполнил свой профиль
    И социальные кнопки убери, они у тебя люто грузят все. Сейчас от серверов Яндекса пинг большой идет уже несколько недель...
    Ответ написан
  • Как сделать новоити как на dle?

    Acuna
    @Acuna
    Заполнил свой профиль
    @djalexsey Вы совершенно не разбираетесь в мат. части! "Виртуальная ссылка", о которой Вы говорите - это банальное правило ЧПУ, за которые отвечает файл .htaccess в корне сайта. Эти правила позволяют сократить ссылку вида site.ru/index.php?mod=news&id=123&name=document например в site.ru/news/document.html
    Гуглите по теме htaccess и mod_rewrite, тем до кучи, ибо это азы. Для начала помедитируйте на файл .htaccess в корне Вашего любимого движка DLE.
    Ответ написан