PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи

Страниц (788): « 1 2 3 4 [5] 6 7 8 9 ... » В конец

> Найдено сообщений: 11815
Мелкий Отправлено: 28 Апреля, 2019 - 21:52:59 • Тема: почему не работает case? • Форум: Вопросы новичков

Ответов: 8
Просмотров: 123
Неуместен, да. switch используется для проверки на равенство.

Логически корректно, впрочем, будет
PHP:
скопировать код в буфер обмена
  1. switch (true) {
  2.     case ($result<0):

Но обычно такой вариант не используется.
Мелкий Отправлено: 28 Апреля, 2019 - 19:22:20 • Тема: почему не работает case? • Форум: Вопросы новичков

Ответов: 8
Просмотров: 123
Perun пишет:
switch($result){
    case ($result<0) : {

Здесь замысловато написано:

Работает соответственно этому корректно.
Мелкий Отправлено: 27 Апреля, 2019 - 23:41:56 • Тема: Исключающее ИЛИ • Форум: Вопросы новичков

Ответов: 2
Просмотров: 58
PHP:
скопировать код в буфер обмена
  1. $x = (true xor true);
  2. // или
  3. ($x = true) xor true;

Что предполагаете вы, а что выполняет PHP?
Ответ: https://www.php.net/manual/en/la...s.precedence.php
Мелкий Отправлено: 24 Апреля, 2019 - 23:27:37 • Тема: Оптимизировать MySQL запрос? • Форум: SQL и Архитектура БД

Ответов: 8
Просмотров: 249
LIME пишет:
100 тыс не понадобится в выборке
Такое пагинируют

То-то и оно, что пагинируют как? Навскидку условие "пользователь проявлял активность недавно" как раз весьма селективно относительно множества всех пользователей.
Обрати внимание: к множеству активных пользователей есть ещё фильтры. В частности (неверно написанный) inner join к shipping. И по этому условию возможно будет обрезано неопределённое число пользователей. Как это пагинировать?

Ситуацию, впрочем, чуть улучшает явная сортировка по независимому критерию. Так что вторую страницу можно сделать нормально передав последний id с прошлой страницы. Но всё равно: мы не можем затребовать topN записей и приклеить к ним недостающие данные со второй базы. Потому что там есть свои фильтры и вместо N рискуем получить вплоть до 0 в результате.

Кстати, проблему никак не облегчает и то, когда это разные таблицы в одной базе. Всё тот же напрасный перебор в join filter. Накопали пользователей на страницу быстро - повезло. А можно и миллионы строк перебрать в поисках тех 10 нужных. Пересечение больших множеств так просто не считается.

LIME пишет:
Вакуум не устанет?

Найдёшь его в mysql? Хинт: нет его.

LIME пишет:
Я вот думаю как себя будет таблица юзеров чувствовать если на каждый запрос новая версия mvcc?

Ну а касательно postgresql - на каждый запрос всегда прокручиваются колёса mvcc машинерии. Даже index only scan - лишь возможность пропустить проверку видимости, если visibility map сказал что можно. А в пределе это может быть неотличимо от index scan. Проверяем, видна ли эа эта версия строки текущей транзакции. А перебираем строки те же самые, из прошлого, будущего (относительно этой транзакции), редкие из настоящего. Потому и вопрос - какова сущность данных в activity? append only лог и постоянный update неких счётчиков будут вести себя весьма различно.
Для innodb логика mvcc тоже прокручивается, но со своими тараканами. В листьях primary key всегда самая последняя версия строки, даже если не закоммичена ещё. Читатели в поисках видимой им версии лезут в журнал записи и достают оттуда предыдущие версии строки если им надо.

LIME пишет:
я только одно могу придумать
сортировать таблицу юзеров по последней активности

Не сортировать, а фильтровать. Нормальная бизнесхотелка вывести каких-то пользователей, исключая неактивных.
Реалтайм для этого не нужен, да. Но это вопрос именно разработки подойти и спросить у бизнеса: "какая задержка будет не важной для попадания пользователя в этот список? 15 минут ок?"
Или ещё как поизвращаться. Но чтобы извращаться - надо знать свои данные.
А для бизнеса задача как раз вполне осмысленно выглядит.
Мелкий Отправлено: 24 Апреля, 2019 - 19:31:57 • Тема: Оптимизировать MySQL запрос? • Форум: SQL и Архитектура БД

Ответов: 8
Просмотров: 249
Вот как дба у меня и нет желания думать в этой теме.

Ок, activity выкинули куда-то. Дальше что? where U.id in (100 тысяч чисел на несколько мегабайт размером запрос)? Хрень это будет, а не оптимизация. Изобретать inner join на приложении и сделать 100 тысяч походов в редис чтобы отсечь некоторое количество из них? Опять хрень получилась.
А какое реальное распределение данных? Что такое activity? append-only лог или постоянный update одних и тех же счётчиков?
Мелкий Отправлено: 24 Апреля, 2019 - 19:07:36 • Тема: Оптимизировать MySQL запрос? • Форум: SQL и Архитектура БД

Ответов: 8
Просмотров: 249

LIME пишет:
Мелкий как считаешь?

Никак не считаю. У меня никакого желания разбирать, что этот запрос предполагает делать и догадываться о структуре таблиц и индексов.
Мелкий Отправлено: 22 Апреля, 2019 - 21:19:48 • Тема: сайт выдает ошибку 302, а должно быть 301 • Форум: Вопросы новичков

Ответов: 12
Просмотров: 156
И какая проблема отдать статичную страницу 404? Вам всё равно нужна статичная страница для 5хх ошибок. Сделайте в этом же стиле для 404.
Мелкий Отправлено: 22 Апреля, 2019 - 18:34:49 • Тема: сайт выдает ошибку 302, а должно быть 301 • Форум: Вопросы новичков

Ответов: 12
Просмотров: 156
DlTA пишет:
а что делать если нечего выдавать?

Ответить, что такого нет.

DlTA пишет:
с переходом на главную

Нет. Это дурацкое поведение. Зачем мне главная?

DlTA пишет:
не перезагружается выдает ошибку и все.

см
Мелкий пишет:
Ну и в принципе для 404 не предполагается Location.

Для 301/302 в rfc написано: см. заголовок Location
Для 404 это один из множества заголовков ответа. Ничего с ним делать не предписано, зато предписано что клиент не должен реагировать на дополнительные заголовки, которые клиент не считает неободимыми.
Мелкий Отправлено: 22 Апреля, 2019 - 18:05:01 • Тема: сайт выдает ошибку 302, а должно быть 301 • Форум: Вопросы новичков

Ответов: 12
Просмотров: 156
Если вы пытаетесь выдать И 404 И location:

Цитата:
The second special case is the "Location:" header. Not only does it send this header back to the browser, but it also returns a REDIRECT (302) status code to the browser unless the 201 or a 3xx status code has already been set.

https://www.php.net/manual/en/fu...ction.header.php

Ну и в принципе для 404 не предполагается Location.
Мелкий Отправлено: 19 Апреля, 2019 - 15:29:06 • Тема: Сортировка массива по определенным ключам другого массива • Форум: Вопросы новичков

Ответов: 4
Просмотров: 177
PHP:
скопировать код в буфер обмена
  1. uasort($array, function($a, $b) use($rules) {
  2.     $apos = array_search($a['type'], $rules);
  3.     $bpos = array_search($b['type'], $rules);
  4.     if ($apos !== false and $bpos !== false)
  5.         return $apos <=> $bpos;
  6.     else
  7.         return ($apos === false) <=> ($bpos === false);
  8. });
  9. var_dump($array);

php 7.0+
Имеет смысл переформатировать $rules во что-то более подходящее для поиска по значению.
(Добавление)
Мелкий пишет:
переформатировать $rules во что-то более подходящее для поиска по значению.

как-то так:
PHP:
скопировать код в буфер обмена
  1. $sortIndex = array_flip($rules);
  2. uasort($array, function($a, $b) use($sortIndex) {
  3.     $apos = $sortIndex[ $a['type'] ] ?? false;
  4.     $bpos = $sortIndex[ $b['type'] ] ?? false;
  5.     if ($apos !== false and $bpos !== false)
  6.         return $apos <=> $bpos;
  7.     else
  8.         return ($apos === false) <=> ($bpos === false);
  9. });
Мелкий Отправлено: 12 Апреля, 2019 - 21:49:11 • Тема: Не понтятно как работать с ErrorException • Форум: Вопросы новичков

Ответов: 2
Просмотров: 102
code присутствует т.к. он присутствует в классе Exception выше в иерархии наследования, а конструктор предполагается единственным способом задания этого параметра.
Можете использовать как пожелаете или игнорировать его.

severity добавлен непосредственно в ErrorException и предполагается что будет использован для передачи E_* констант. Его некорректно называть кодом ошибки, это уровень предупреждения. Поэтому это две разные штуки. severity уровень пойманного ErrorException можете получить методом getSeverity
Мелкий Отправлено: 10 Апреля, 2019 - 10:37:23 • Тема: передача переменных из одного файла в другой методом POST • Форум: Вопросы новичков

Ответов: 7
Просмотров: 116

а в чём смысл дёргать <?= ради константного вывода?
Мелкий Отправлено: 08 Апреля, 2019 - 15:14:05 • Тема: формат записи инструкций для работы с БД • Форум: Работа с СУБД

Ответов: 1
Просмотров: 149
insert values - стандартный
insert set - дополнительно реализованный в mysql. Запрос эквивалентный.
Мелкий Отправлено: 01 Апреля, 2019 - 10:03:28 • Тема: Регулярные выражения для диапазона IP адресов • Форум: Вопросы новичков

Ответов: 3
Просмотров: 81
Включите отображение ошибок.

El Diablo пишет:
Правильно ли написал регулярные выражения?

Вы написали часть выражения. Это не всё выражение. В частности нет delimiter и потому вы получаете ошибку от preg_match, но, очевидно, не видите её.
Мелкий Отправлено: 23 Марта, 2019 - 14:25:43 • Тема: Задание на собеседовании • Форум: Вопросы новичков

Ответов: 6
Просмотров: 132
Даниил7389 пишет:
Задание на собеседовании

Вы очевидно никак не готовы для этой работы.
Если в качестве тестового задания дают написание скрипта PHP, хоть и такого элементарного - значит от вас ожидают хотя бы такие базовые навыки по этому языку.

Даниил7389 пишет:
просто мои знания в PHP 4 дня

Для меня это звучит не оправданием, а отягчающим обстоятельством. Зачем сунулись на такую работу с нулевыми знаниями?

Страниц (788): « 1 2 3 4 [5] 6 7 8 9 ... » В конец
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB