Соединение с MySQLi не видно внутри функции

Denchik

Новичок
откуда у тебя там миллисекунды взялись?
В миллисекундах общее время выполнения скрипта считается, а не разница в 10 опкодов.
Это к примеру, зависит от железа и нагрузки на него. К тому же оверхед имеет свойство накапливаться.
Смысл, я надеюсь Вы поняли.
Зачем сделать просто, когда можно делать сложно?
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
откуда у тебя там миллисекунды взялись?
В миллисекундах общее время выполнения скрипта считается, а не разница в 10 опкодов.
Не важно, вопрос ты понял мой прекрасно, не придирайся к словам.
 

Denchik

Новичок
Просто слово соединение я интерпретировал как глагол (действие) а не идентификатор соединения
 

Фанат

oncle terrible
Команда форума
Зачем сделать просто, когда можно делать сложно?
Ты обед в столовке из двух тарелок и стакана ешь, наверное?
Зачем так сложно? Почему не брать всё сразу в одной посуде - суп, котлеты, макароны, компот - и всё черпать ложкой.
Да и ложка, в-общем-то, не так уж и нужна
 

Denchik

Новичок
Да смысл понятен не будем говорить в абсолютных величинах (хотя для приложений РВ
Ты обед в столовке из двух тарелок и стакана ешь, наверное?
Зачем так сложно? Почему не брать всё сразу в одной посуде - суп, котлеты, макароны, компот - и всё черпать ложкой.
Да и ложка, в-общем-то, не так уж и нужна
Очень удачное сравнение или аллегория. Хорошо, если развивать дальше. Тоже, позволю себе немного поутрировать.
Вы наверное в поход с собой берёте кофе-аппарат, сервиз из 12 блюд, и конечно посудомоечную машину? Или берёте самое необходимое, когда каждый грамм веса на счету?
Но всё же как бы Вы написали код ТС без потери производительности?
 

Фанат

oncle terrible
Команда форума
как угодно
этот код как не пиши, там никакой "разницы в производительности" в принципе не будет. она на порядки меньше погрешности измерения.

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

Denchik

Новичок
как угодно
этот код как не пиши, там никакой "разницы в производительности" в принципе не будет. она на порядки меньше погрешности измерения.

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

Фанат

oncle terrible
Команда форума
Я так и знал, что ты не сможешь остановиться :)
Только из таких кукольных домиков.
приложения, которые грузятся пол-минуты получаются исключительно из-за таких вот пустоголовых обезьянок, у которых своего опыта ноль, но зато начитались в интернете других обезьян
И которые пока в одном месте гоняются за двумя воображаемыми опкодами, в другом городят реальные тормоза, просто в силу неграмотности.
Рассуждая примерно так же, "зачем усложнять структуру БД? какие-то нормальные формы. сложить всё в одно поле через палочку, и будет удобно".
 

Yoskaldyr

"Спамер"
Партнер клуба
зачем усложнять структуру БД? какие-то нормальные формы. сложить всё в одно поле через палочку, и будет удобно".
ой даже не напоминай :(

P.S. Хотя бывает и другая крайность - просто паническая боязнь добавить денормализованные данные
 

Фанат

oncle terrible
Команда форума
Вам виднее. Только из таких кукольных домиков и получаются приложения, которые грузятся по пол-минуты. И почему Вы насчитали именно 10 опкодов, можно навернуть и поболее.
Я понимаю что ни ты, ни автор поста не видите дальше своего носа, и вы просто не представляете себе никаких других ситуаций, которые могут возникнуть.
Я понимаю, что для вас вот этот вот цикл вывода данных из БД - это УЖЕ предел сложности, а всё что дальше - это уже, соответственно, запредельная сложность, которая положит любой сервер.
И, конечно же, я прекрасно понимаю, что твои туманные представления о программировании куда более актуальны, чем мнение людей, которые занимаются им не первый десяток лет.

Но всё-же, если тебе вдруг захочется узнать что-то новое, и чуть расширить свой микроскопический горизонт в разработке, то попробуй представить себе несколько ситуаций:

1. при выполнении SQL запроса вдруг возникла ошибка.
Дальше ты должен представить себе, как выглядит ошибка на твоем сайте, и как она выглядит на любом профессиональном сайте по твоему выбору.
Правильно - у тебя ошибка всеми кишками наружу, прямо посреди выводимого HTML.
А у любого нормального сайта выводится отдельная страница о том, что на сайте проводятся технические работы.
И далее можно сделать вывод о том, что второй вариант возможен только если у нас разделена работа с БД и вывод информации.

2. Ты написал такой офигенный движок, что он потребовался аж на двух сайтах. И вот у тебя эти два сайта работают, деньги приносят, и ты страшно доволен жизнью, попиваешь манговый сок на Гоа. Дизайн у сайтов, разумеется, совершенно разный. Но вот ты вдруг обнаружил ошибку. И исправил её. Теперь представляем твои действия в случае, если у сайта нормальная структура, или твоя.
При нормальной структуре ты просто копируешь движок, который отделён от вывода, с первого сайта на второй, и идешь попивать сок дальше.
А в твоём случае вместо копирования ты лезешь копаться в кишках второго сайта.

3. Заказчик второго сайта пожелал использовать модную технологию SPA, заказал (не у тебя, конечно, а у специалистов) развесистый фронтенд на популярном JS фреймворке, и теперь вместо HTML твой сайт должен отдавать JSON в ответ на запросы фронта. Вся информация осталась та же, только формат поменялся.
В случае минимально нормальной структуры ты просто меняешь вызов view($data) на json_encode($data) и идешь пить сок дальше.
А в случае твоей - вместо сока тебя ждёт куча однообразной работы.

И всё это только потому, что тебя когда-то до колик напугала перспектива написать адски сложное приложение, где вместо одной функции используется целых ДВЕ!!!
 

Denchik

Новичок
Я так и знал, что ты не сможешь остановиться :)

приложения, которые грузятся пол-минуты получаются исключительно из-за таких вот пустоголовых обезьянок, у которых своего опыта ноль, но зато начитались в интернете других обезьян
И которые пока в одном месте гоняются за двумя воображаемыми опкодами, в другом городят реальные тормоза, просто в силу неграмотности.
Рассуждая примерно так же, "зачем усложнять структуру БД? какие-то нормальные формы. сложить всё в одно поле через палочку, и будет удобно".
Ну почему же вы опустились до оскорблений? Поднять свою самооценку? Огорчить меня? Это врядли получится.
Вы будете смеяться, но в ряде случаев используются денормализованные данные по результатам тестирования. Бывают случаи, когда малоэффективно собирать JOINами данные из двадцати табличек с непонятным размером и количеством ключей, когда быстрее выбрать данные из одной таблицы, по одному ключу разумной длины (пускай и составному). Правда, приходится жертвовать дисковым пространством, но приоритет отдаётся скорости выборки. Кстати, в ряде случаев используется не SELECT, а hanller, неблокирующее чтение.
Далее по поводу вопроса. Я абсолютно не знаю для каких целей ТС задал вопрос (может, ему просто лабораторку надо сделать, может ещё, что). Я просто попытался помочь.
Но такой стиль кодирования имеет право жить по нескольким причинам (хотя, бы для той же лабораторки). Даже с GLOBALS имеет право на жизнь. Если программист полностью контролирует свое приложение, он имеет полнейшее право обратится и к GLOBALS. Ведь это же простое обращение к ячейке массива.
Многими зашоренными канонами запрещается пользоваться goto. Но, допустим, для ассемблера некоторых архитектур JMP (аналог goto, безусловный переход) - это нормальная команда, ничем не хуже других (если, конечно разработчик полностью контролирует своё приложение).
Теперь по пунктам. Наберусь наглости и попробую расширить Ваш кругозор в разработке:
1. при выполнении SQL запроса вдруг возникла ошибка.
Дальше ты должен представить себе, как выглядит ошибка на твоем сайте, и как она выглядит на любом профессиональном сайте по твоему выбору.
Правильно - у тебя ошибка всеми кишками наружу, прямо посреди выводимого HTML.
А у любого нормального сайта выводится отдельная страница о том, что на сайте проводятся технические работы.
Во первых у ТС в первых строках есть какая - то обработка ошибки. Во вторых - представьте ситуацию, когда ошибка БД сведена к минимуму в системе. Если проводятся плановые работы или выходит по неисправности основной сервер БД, тут же его функции берёт на себя резервный. Аналог АВР в электротехнике (автоматического включения резерва).
В третьих у меня не "профессиональный" сайт в Вашем понимании, а подсистема выдачи информации приближенная к режиму реального времени с дискретизацией по времени 1с. (это надо успеть оцифровать несколько тысяч территориально распространённых аналоговых величин, передать их в ОСРВ, дорасчитать, агрегировать, а потому уже удалённому веб клиенту учитывая и по возможности перекрывая задержки в каналах связи и каналообразующей аппаратуре (но это уже ответственность связистов по большей части).
В четвёртых пользователям этой подсистемы не нужна страница об ошибках (уж поверьте мне на слово), им желательно живые данные.
Корректность данных также помечается на уровне БД, а не клиентской подситемы вывода, это не её задача.
2. Ты написал такой офигенный движок, что он потребовался аж на двух сайтах. И вот у тебя эти два сайта работают, деньги приносят, и ты страшно доволен жизнью, попиваешь манговый сок на Гоа. Дизайн у сайтов, разумеется, совершенно разный. Но вот ты вдруг обнаружил ошибку. И исправил её. Теперь представляем твои действия в случае, если у сайта нормальная структура, или твоя.
При нормальной структуре ты просто копируешь движок, который отделён от вывода, с первого сайта на второй, и идешь попивать сок дальше.
А в твоём случае вместо копирования ты лезешь копаться в кишках второго сайта.
Я не пишу никаких движков, их уже написано достаточное количество ширпотреба. Я веду конкретные долгосрочные задачи под ключ, со своими критериями, рамками и зонами ответственности.
3. Заказчик второго сайта пожелал использовать модную технологию SPA, заказал (не у тебя, конечно, а у специалистов) развесистый фронтенд на популярном JS фреймворке, и теперь вместо HTML твой сайт должен отдавать JSON в ответ на запросы фронта. Вся информация осталась та же, только формат поменялся.
В случае минимально нормальной структуры ты просто меняешь вызов view($data) на json_encode($data) и идешь пить сок дальше.
А в случае твоей - вместо сока тебя ждёт куча однообразной работы.
Не все пляшут под дудку заказчиков. (Ну, только если не шабашка какая) Повторюсь - у меня есть свои задачи с чётко обозначенными условиями. Но даже если и так - заменить view($connection) на json_out($connection), это не так уж и сложно. Поэтому - недолго я буду без сока.
 

fixxxer

К.О.
Партнер клуба
В третьих у меня не "профессиональный" сайт в Вашем понимании, а подсистема выдачи информации приближенная к режиму реального времени с дискретизацией по времени 1с. (это надо успеть оцифровать несколько тысяч территориально распространённых аналоговых величин, передать их в ОСРВ, дорасчитать, агрегировать, а потому уже удалённому веб клиенту учитывая и по возможности перекрывая задержки в каналах связи и каналообразующей аппаратуре (но это уже ответственность связистов по большей части).
И зачем такое делать на php, который непредсказуем ни по памяти ни по процессору и в любой момент может устроить внутреннюю реаллокацию? Наверное, на самом деле все с таким огромным запасом, что пофигу.
И на фоне накладных расходов на внутреннее устройство самого php лишний вызов функции - это вообще ничего.
Меня вообще всегда поражали микрооптимизаторы на php. Я бы понял такие рассуждения в среде разработчиков ембедовки, где действительно каждый байт и каждый такт на счету, а тут))
 

Denchik

Новичок
И зачем такое делать на php, который непредсказуем ни по памяти ни по процессору и в любой момент может устроить внутреннюю реаллокацию?
Ну, для стационарных пользователей (диспов) есть конечно SCADA на ОСРВ и с БДРВ. Но есть определённый круг удалённых веб-пользователей, для которых этот огород.
А на чём бы Вы порекомендовали организовать подобное?
Я бы понял такие рассуждения в среде разработчиков ембедовки, где действительно каждый байт и каждый такт на счету, а тут))
С микроконтроллерами тоже приходится сталкиваться в части АЦП, там вообще жёстко со временем.
 
Последнее редактирование:

fixxxer

К.О.
Партнер клуба
Если php хватает, можно и на нем. Только непонятно, к чему экономить на спичках, когда это все на пхп, который на обработку каждого запроса - даже на пустой скрипт - немало так навычисляет и накопирует.

Если бы уперся по производительности или памяти, но это сначала упереться надо, смотрел бы по ситуации исходя из задачи. Как минимум на чем-то компилируемом в нативный код, и с обработкой запросов в цикле по принципе event loop, чтобы вся инициализация делалась один раз при запуске. Если не видно, где упрусь в GC, то на golang, ибо просто. Если есть, где внезапная gс pause может создать проблемы, то по-старинке на сях с libev/lubuv. Ну или на rust, если захочется изучить по ходу дела что-то новое.
 

Denchik

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

Если бы уперся по производительности или памяти, но это сначала упереться надо, смотрел бы по ситуации исходя из задачи. Как минимум на чем-то компилируемом в нативный код, и с обработкой запросов в цикле по принципе event loop, чтобы вся инициализация делалась один раз при запуске. Если не видно, где упрусь в GC, то на golang, ибо просто. Если есть, где внезапная gс pause может создать проблемы, то по-старинке на сях с libev/lubuv. Ну или на rust, если захочется изучить по ходу дела что-то новое.
Фиг, его, так исторически сложилось, я попал уже на реконструкцию, альтернативы, вроде как не рассматривались (соврал рассматривался Си, но пока отложили в долгий ящик из-за трудоёмкости). Но всё равно, спасибо за инф. Рассморим.
Еще раз повторю - ТС задал конкретный вопрос, я про видимость переменной, я попытался ему максимально коротко ответить (для какого проекта он это делает я не знаю, может это рыба какая). Ни в какие дискуссии вступать не собирался.
 

fixxxer

К.О.
Партнер клуба
соврал рассматривался Си, но пока отложили в долгий ящик из-за трудоёмкости
Ну на самом деле я сей не трогал уже лет 15, это надо прямо очень сильно упереться, причём настолько, что даже железом вопрос не решить, а это в наши дни либо ембедовка, либо что-то размером с Гугл, когда решение вопроса железом означает постройку пары датацентров.

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

Denchik

Новичок
Ну на самом деле я сей не трогал уже лет 15, это надо прямо очень сильно упереться, причём настолько, что даже железом вопрос не решить, а это в наши дни либо ембедовка, либо что-то размером с Гугл, когда решение вопроса железом означает постройку пары датацентров.

golang простой донельзя, изучается за день реально, и решает в контексте веба (в широком понимании) почти все задачи, где важна производительность, тем более что такие задачи обычно небольшие и прекрасно выносятся в микросервисы.
Нет, не Гугл, конечно, на порядки раз меньше. ОИК энергосистемы. Дело не в том, что упирается. а выжимание последних соков из того что есть, Т.к. нового в инвестпрограмме пока не предвидится.
 

Фанат

oncle terrible
Команда форума
Во первых у ТС в первых строках есть какая - то обработка ошибки.
И сейчас опять будет "ой, я не то прочитал!" подумаешь, перепутал ошибку соединения с ошибкой запроса. Не велика важность.
Хотя проблема конечно не в прочитал, а в том что ты этот код видишь впервые в жизни, и слабо представляешь себе что он делает.
представьте ситуацию, когда ошибка БД сведена к минимуму в системе. Если проводятся плановые работы или выходит по неисправности основной сервер БД, тут же его функции берёт на себя резервный. Аналог АВР в электротехнике (автоматического включения резерва).
ну, не то чтобы это требовалось особо доказывать, но этот пассаж лишний раз подтверждает, что реальных веб-приложений ты не нюхал даже за километр.
Но зато наглости набрался полные штаны.
Я абсолютно не знаю для каких целей ТС задал вопрос (может, ему просто лабораторку надо сделать, может ещё, что). Я просто попытался помочь.
чтобы тебя доктора так лечили, "я не знаю чем он болен, но так, вырезал кое-что"
Свободен
 
Сверху