[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Офттоп из "FAQ"
alex12060
Кстати, всегда не любил подобные записи:


$sql = "SELECT * FROM `users`";
$query = mysql_query($sql) or die(mysql_error());


Зачем заводить лишние переменные, когда можно сразу передать в функцию? Это лишь нагружает лишними данными память...



Спустя 3 минуты, 16 секунд (9.04.2011 - 19:09) waldicom написал(а):
Цитата (alex12060 @ 9.04.2011 - 17:06)
Зачем заводить лишние переменные, когда можно сразу передать в функцию? Это лишь нагружает лишними данными память...

Да. Видимо для микроконтроллеров прогарммируешь? smile.gif
А так для дебага или когда запросы большие. Или тебе еще не попадались большие запросы?

пысы. Надо это их ФАКа перенести.

Спустя 10 минут, 52 секунды (9.04.2011 - 19:20) Trianon написал(а):
alex12060
Куда более полезная запись выглядит примерно так:
$sql = "SELECT * FROM `users`";
$query = mysql_query($sql)
or die("Error in SQL:<pre>$sql</pre>".mysql_error());

И здесь Вы без переменной не обойдетесь.

Спустя 2 минуты, 36 секунд (9.04.2011 - 19:23) waldicom написал(а):
Цитата (Trianon @ 9.04.2011 - 17:20)
Куда более полезная запись выглядит примерно так:

Если такое программирование кто-то использует на production серверах, то его надо быстро быстро ударить.

Спустя 3 минуты, 55 секунд (9.04.2011 - 19:27) Trianon написал(а):
waldicom
При чем тут production.

В реальной жизни этот mysql_query напрямую никто не дергает.
Дергают обложку, которая исполняет запрос, логгирует ошибки в нужное место (и как раз нужное место изрядно зависит от окружения: production или development), а наружу выдает чистенькие данные, не нагружая логику скрипта отловом ошибок.
Но не предлагать же это тому, кто запросы первый месяц пишет?

И кстати, быстрый быстрый удар - не всегда самый эффективный smile.gif

Спустя 4 минуты, 27 секунд (9.04.2011 - 19:31) waldicom написал(а):
Цитата (Trianon @ 9.04.2011 - 17:27)
И кстати, быстрый быстрый удар - не всегда самый эффективный smile.gif

Согласен. Но потом можно добить чем-нить тяжелым smile.gif

Спустя 10 минут, 52 секунды (9.04.2011 - 19:42) neadekvat написал(а):
Trianon, добавил предложенный вариант в faq, сам о нем забываю.

Спустя 1 минута, 31 секунда (9.04.2011 - 19:43) Trianon написал(а):
Главное, не забыть добавить добить чем-нить тяжелым smile.gif)
А то ить так и останется без контрольного...

Спустя 2 часа, 7 минут, 55 секунд (9.04.2011 - 21:51) alex12060 написал(а):
Какие все злые, я просто поражаюсь...

Спустя 6 минут, 33 секунды (9.04.2011 - 21:58) Trianon написал(а):
alex12060
Да какие злые нафиг, дурачимся просто.

Вообще-то фраза насчет ударить была адресована мне smile.gif
и что - на самого себя злиться чтоли? smile.gif)


Спустя 59 минут, 9 секунд (9.04.2011 - 22:57) alex12060 написал(а):
Ну, я про это и говорю)
Порой, и боишься сказать что-то не то, побьют сразу biggrin.gif

Спустя 3 минуты, 46 секунд (9.04.2011 - 23:01) ApuktaChehov написал(а):
Тема интересная.

С одной стороны все очень удобно. Если происходит ошибка, то сразу видно и тело запроса и ошибку. Но с другой стороны все не так хорошо.

Все мы знаем, что в отлаженном приложении ошибок нет. И соответственно такая система является избыточной. Если так памятью раскидываться, то ее не напасешься. Или же после отладки переписывать скрипты?

Спустя 9 минут, 11 секунд (9.04.2011 - 23:10) neadekvat написал(а):
Цитата (ApuktaChehov @ 10.04.2011 - 00:01)
Если так памятью раскидываться, то ее не напасешься.

Да бросьте вы на спичках экономить.
Лично я добавляю только одну переменную - $sql, а в $query хранится результат запроса. Исключение - когда происходит пересечение (текст запроса гененируется раньше, чем делается второй запрос, а нужен уже после).
Что, с одной переменной все приложение рухнет?
К тому же
$sql = "SELECT t1.*, t2.*, t3.*
FROM `db_socket` t1
LEFT JOIN db_motherboard t2 USING(`socket`)
LEFT JOIN db_cpu t3 USING(`socket`)
WHERE t1.socket = 775"
;
$query = mysql_query($sql);

Выглядит всяко лучше, чем
$query = mysql_query("SELECT t1.*, t2.*, t3.*
FROM `db_socket` t1
LEFT JOIN db_motherboard t2 USING(`socket`)
LEFT JOIN db_cpu t3 USING(`socket`)
WHERE t1.socket = 775"
);

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

Спустя 8 минут (9.04.2011 - 23:18) Trianon написал(а):
ApuktaChehov

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

Но даже если предположить, что Вы напишете этот код явным образом.
И что? Если запрос не оперирует BLOB, он редко займет больше пары сотен байт, очень редко - больше пары килобайт, и совсем уж в единичных случаях - больше пары сотен килобайт. И всё это до выхода из текущей функции.
В конце концов сделайте unset($sql);
Учитывая, что присваивание каждого очередного запроса затрет текст предыдущего, и что объемы данных обычно превышают объемы запросов на порядки, рассуждать о каких-то ужасных потерях - либо невежество либо лицемерие.


Спустя 52 секунды (9.04.2011 - 23:19) ApuktaChehov написал(а):
neadekvat - ясен перец нет. Я это вообще к тому, что где она переменная, там и вторая. Следовательно душа должна болеть за каждую переменную без которой можно обойтись.

Спустя 2 минуты, 2 секунды (9.04.2011 - 23:21) neadekvat написал(а):
Цитата (ApuktaChehov @ 10.04.2011 - 00:19)
Следовательно душа должна болеть за каждую переменную без которой можно обойтись.

Готов поставить сто рублей и шоколадку "Аленка" на то, что еще ни один проект не сталкивался с проблемой масштабируемости из-за большого количества переменных.

Знаете, что хуже? Когда боятся вводить новые переменные. И лепят:
$var = функция(функция, параметр параметр, функция(параметр, функция(параметр, параметрн)));

Спустя 1 минута, 39 секунд (9.04.2011 - 23:22) ApuktaChehov написал(а):
Trianon - вот вот. Пошло поехало, теперь уже и unset прикрутим.
Так и получают дико избыточные проекты. Память которых можно раза в 2 уменьшить. Ладно это еще PHP. А если софт на языке память которого постоянно весить в оперативе?

Спустя 2 минуты, 45 секунд (9.04.2011 - 23:25) neadekvat написал(а):
Цитата (ApuktaChehov @ 10.04.2011 - 00:22)
теперь уже и unset прикрутим.

Вы так сказали, будто это что-то плохое.
Цитата (ApuktaChehov @ 10.04.2011 - 00:22)
А если софт на языке память которого постоянно весить в оперативе?

Мне кажется, очевиден ответ - подходы к веб-приложению, которое существует в течение секунды, и к прикладному - совершенно разные.

Спустя 2 минуты, 10 секунд (9.04.2011 - 23:27) ApuktaChehov написал(а):
neadekvat - я не против этих методов. Я не говорил что это неправильно или плохо. Я лишь пытаюсь привлечь ваше внимание к возможному развитию событий. Снежный ком тоже с одной песчинки начинается.

Кстати, может именно по этому существует мнение, что программисты которые начинали свой пусть с PHP навсегда потеряны для мира программирования. wink.gif

Спустя 8 минут, 2 секунды (9.04.2011 - 23:35) neadekvat написал(а):
Цитата (ApuktaChehov @ 10.04.2011 - 00:27)
Снежный ком тоже с одной песчинки начинается.

Вот честно скажу - отдельную переменную для большинства запросов я использую уже как минимум года полтора, но на количестве переменных, которые я ввожу в программу, прямо это никак не сказалось. Надо - ввел. При этом стараюсь использовать одну логику (не плодить user_error, user_errors, error_user и др), иногда, правда, не получается.

Цитата (ApuktaChehov @ 10.04.2011 - 00:27)
Кстати, может именно по этому существует мнение, что программисты которые начинали свой пусть с PHP навсегда потеряны для мира программирования.

Гнать на php также модно, как на Microsoft.
По необходимости иногда обращаюсь к Паскалю (начал я с php), и единственное, что вызывает у меня затруденение - это то, что присваивание происходит с помощью :=, а не просто =. В остальном ни строгая типизация, ни необходимость объявлять переменные, меня не напрягают.

Спустя 6 минут, 33 секунды (9.04.2011 - 23:42) ApuktaChehov написал(а):
neadekvat - я на него не гоню. Я сам его люблю и им каждый день пользуюсь.. ну почти каждый laugh.gif

И мелкомягкие мне тоже нравятся. rolleyes.gif

Спустя 38 секунд (9.04.2011 - 23:43) neadekvat написал(а):
Цитата (ApuktaChehov @ 10.04.2011 - 00:42)
я на него не гоню.

Я не про вас, я в целом про моду:
Цитата (ApuktaChehov @ 10.04.2011 - 00:27)
существует мнение


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

Спустя 1 минута, 47 секунд (9.04.2011 - 23:44) ApuktaChehov написал(а):
И вообще у вас Карма на 2 штук больше чем у меня.

*пошел народу помогать*

biggrin.gif

Спустя 1 минута, 17 секунд (9.04.2011 - 23:46) neadekvat написал(а):
Цитата (ApuktaChehov @ 10.04.2011 - 00:44)
И вообще у вас Карма на 2 штук больше чем у меня.

Я же говорил, что здесь придают ей лишнее значение)
Я там, кстати, пост обновил - хотя бы просто прочитайте smile.gif

Цитата (ApuktaChehov @ 10.04.2011 - 00:44)
*пошел народу помогать*

А если в отношении ко времени на форуме? wink.gif

Спустя 1 минута, 49 секунд (9.04.2011 - 23:47) ApuktaChehov написал(а):
sad.gif - тогда я вам не конкурент.

Где и какой пост? Не вижу!

Спустя 32 минуты, 46 секунд (10.04.2011 - 00:20) Trianon написал(а):
ApuktaChehov
Цитата
Ладно это еще PHP.

Бггг. php это едва ли не самый кошмарный язык в плане накладных расходов на память.

Попробуйте как нибудь запустить тест вроде такого
for($i = 0; $i < 1000; )
$a[$i++] = memory_get_usage();
print_r($a);
и поглядите, во что выливается распределение массива из тысячи целых чисел.

Цитата
А если софт на языке память которого постоянно весить в оперативе?

Фортран чтоли?
Я что-то даже и не припомню другого языка, где не было бы ни автоматического, ни динамического распреления памяти.


Спустя 9 минут, 13 секунд (10.04.2011 - 00:29) Trianon написал(а):
neadekvat
Цитата
Знаете, что хуже? Когда боятся вводить новые переменные. И лепят:
$var = функция(функция, параметр параметр, функция(параметр, функция(параметр, параметрн)));

Вот кстати не соглашусь.
Если аккуратно написать, функциональный стиль еще никогда помех не создавал.

$var = 
функция(
функция( //эту скобку я добавил.
параметр,
параметр,
функция(
параметр,
функция(
параметр,
параметр
)
)
)
);
//- эту скобку я добавил

Спустя 5 минут, 47 секунд (10.04.2011 - 00:35) kirik написал(а):
Цитата (ApuktaChehov @ 9.04.2011 - 16:01)
Если так памятью раскидываться, то ее не напасешься.

Ставлю сникерс и коробок спичек на то что большинство из тех кто трясуться за память (да и тех кто не) не используют функции *_free_result(); (без личностей).

Спустя 53 секунды (10.04.2011 - 00:36) neadekvat написал(а):
Цитата (Trianon @ 10.04.2011 - 01:29)
Если аккуратно написать, функциональный стиль еще никогда помех не создавал.

Честно скажу, вот сколько чужого кода перелопатил - такого еще нигде не видел.
Исключение - публичные проекты типа фреймворков или cms.
Неужели только страх позора может заставить людей уважать своих коллег?

Спустя 25 минут, 1 секунда (10.04.2011 - 01:01) kirik написал(а):
Цитата (neadekvat @ 9.04.2011 - 17:36)
Исключение - публичные проекты типа фреймворков или cms.

Как я люблю красивый код oscommerce!

Спустя 1 минута, 57 секунд (10.04.2011 - 01:03) neadekvat написал(а):
Цитата (kirik @ 10.04.2011 - 02:01)
Как я люблю красивый код oscommerce!

Сколько сарказма, ух :)

Спустя 2 часа, 31 минута, 21 секунда (10.04.2011 - 03:34) inpost написал(а):
Kirik, а мне все-таки непонятно, про какой именно скрипт имеется ввиду?
"Вся ассоциированная результирующая память автоматически освобождается по окончании выполнения скрипта".

Спустя 7 минут, 9 секунд (10.04.2011 - 03:42) kirik написал(а):
Цитата (inpost @ 9.04.2011 - 20:34)
"Вся ассоциированная результирующая память автоматически освобождается по окончании выполнения скрипта".

Всё верно, а пока скрипт выполняется - он занимает память smile.gif Выполняются 2 одинаковых скрипта - занимается в 2 раза больше памяти.. как-то так..

Спустя 2 минуты, 8 секунд (10.04.2011 - 03:44) inpost написал(а):
скрипт - он открытия соединения до его закрытия, или один запрос = 1 скрипт\?

Спустя 2 минуты, 52 секунды (10.04.2011 - 03:47) kirik написал(а):
Цитата (inpost @ 9.04.2011 - 20:44)
скрипт - он открытия соединения до его закрытия, или один запрос = 1 скрипт\?

Не понял?..
Юзер открыл index.php - все запросы которые там выполнились и результаты заняли память. Когда скрипт завершил работу - память освободилась.

Спустя 41 минута, 59 секунд (10.04.2011 - 04:29) inpost написал(а):
kirik
А разве сам Мускул не выгружает из памяти то, что занял лично он?

Спустя 42 минуты, 41 секунда (10.04.2011 - 05:11) kirik написал(а):
inpost
А мускул ту ни при чем. Результат запроса храниться в памяти, выделяемой самим php.

Спустя 7 часов, 33 минуты, 33 секунды (10.04.2011 - 12:45) Админ написал(а):
а у меня всегда висит в памяти народная мудрость
Помните, что сопровождать ваш код будет склонный к насилию психопат, знающий где вы живёте

Спустя 9 часов, 59 минут, 51 секунда (10.04.2011 - 22:45) kirik написал(а):
Цитата (Админ @ 10.04.2011 - 05:45)
а у меня всегда висит в памяти народная мудрость
Помните, что сопровождать ваш код будет склонный к насилию психопат, знающий где вы живёте

Как в том детском анекдоте? smile.gif
сидят зоофил, педофил, некрофил и экстремал:
зоофил: сейчас бы кошечку....
педофил: котеночка...
некрофил: дохленького...
экстремал: мяу...

Спустя 17 минут, 9 секунд (10.04.2011 - 23:02) neadekvat написал(а):
Цитата (kirik @ 10.04.2011 - 23:45)
детском анекдоте

Ну-ну :)

Спустя 32 минуты, 42 секунды (10.04.2011 - 23:35) Trianon написал(а):
kirik
Свернутый текст
Вообще-то вместо некрофила там сидел маньяк с репликой "зарезать" smile.gif)

Спустя 2 часа, 57 минут, 25 секунд (11.04.2011 - 02:32) kirik написал(а):
Trianon
Отчего такая уверенность? tongue.gif

Спустя 9 часов, 30 минут, 8 секунд (11.04.2011 - 12:02) Trianon написал(а):
да фиг знает. Так слышал smile.gif
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.