$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) |
Зачем заводить лишние переменные, когда можно сразу передать в функцию? Это лишь нагружает лишними данными память... |
Да. Видимо для микроконтроллеров прогарммируешь?

А так для дебага или когда запросы большие. Или тебе еще не попадались большие запросы?
пысы. Надо это их ФАКа перенести.
Спустя 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), а наружу выдает чистенькие данные, не нагружая логику скрипта отловом ошибок.
Но не предлагать же это тому, кто запросы первый месяц пишет?
И кстати, быстрый быстрый удар - не всегда самый эффективный
При чем тут production.
В реальной жизни этот mysql_query напрямую никто не дергает.
Дергают обложку, которая исполняет запрос, логгирует ошибки в нужное место (и как раз нужное место изрядно зависит от окружения: production или development), а наружу выдает чистенькие данные, не нагружая логику скрипта отловом ошибок.
Но не предлагать же это тому, кто запросы первый месяц пишет?
И кстати, быстрый быстрый удар - не всегда самый эффективный

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

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

А то ить так и останется без контрольного...
Спустя 2 часа, 7 минут, 55 секунд (9.04.2011 - 21:51) alex12060 написал(а):
Какие все злые, я просто поражаюсь...
Спустя 6 минут, 33 секунды (9.04.2011 - 21:58) Trianon написал(а):
alex12060
Да какие злые нафиг, дурачимся просто.
Вообще-то фраза насчет ударить была адресована мне
и что - на самого себя злиться чтоли?
)
Да какие злые нафиг, дурачимся просто.
Вообще-то фраза насчет ударить была адресована мне

и что - на самого себя злиться чтоли?

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

Спустя 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);
Учитывая, что присваивание каждого очередного запроса затрет текст предыдущего, и что объемы данных обычно превышают объемы запросов на порядки, рассуждать о каких-то ужасных потерях - либо невежество либо лицемерие.
как я уже сказал - в реальном проекте этот код будет написан один единственный раз - в обложке-методе доступа к БД . И переменная, создаваемая на этом шаге проживет не дольше чем до выхода из обложки.
Но даже если предположить, что Вы напишете этот код явным образом.
И что? Если запрос не оперирует 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 уменьшить. Ладно это еще 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 навсегда потеряны для мира программирования.
Кстати, может именно по этому существует мнение, что программисты которые начинали свой пусть с PHP навсегда потеряны для мира программирования.

Спустя 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 - я на него не гоню. Я сам его люблю и им каждый день пользуюсь.. ну почти каждый
И мелкомягкие мне тоже нравятся.

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

Спустя 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 штук больше чем у меня.
*пошел народу помогать*
*пошел народу помогать*

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

Цитата (ApuktaChehov @ 10.04.2011 - 00:44) |
*пошел народу помогать* |
А если в отношении ко времени на форуме?

Спустя 1 минута, 49 секунд (9.04.2011 - 23:47) ApuktaChehov написал(а):

Где и какой пост? Не вижу!
Спустя 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) |
"Вся ассоциированная результирующая память автоматически освобождается по окончании выполнения скрипта". |
Всё верно, а пока скрипт выполняется - он занимает память

Спустя 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.
А мускул ту ни при чем. Результат запроса храниться в памяти, выделяемой самим php.
Спустя 7 часов, 33 минуты, 33 секунды (10.04.2011 - 12:45) Админ написал(а):
а у меня всегда висит в памяти народная мудрость
Помните, что сопровождать ваш код будет склонный к насилию психопат, знающий где вы живёте
Помните, что сопровождать ваш код будет склонный к насилию психопат, знающий где вы живёте
Спустя 9 часов, 59 минут, 51 секунда (10.04.2011 - 22:45) kirik написал(а):
Цитата (Админ @ 10.04.2011 - 05:45) |
а у меня всегда висит в памяти народная мудрость Помните, что сопровождать ваш код будет склонный к насилию психопат, знающий где вы живёте |
Как в том детском анекдоте? 

сидят зоофил, педофил, некрофил и экстремал:
зоофил: сейчас бы кошечку....
педофил: котеночка...
некрофил: дохленького...
экстремал: мяу...
зоофил: сейчас бы кошечку....
педофил: котеночка...
некрофил: дохленького...
экстремал: мяу...
Спустя 17 минут, 9 секунд (10.04.2011 - 23:02) neadekvat написал(а):
Цитата (kirik @ 10.04.2011 - 23:45) |
детском анекдоте |
Ну-ну :)
Спустя 32 минуты, 42 секунды (10.04.2011 - 23:35) Trianon написал(а):
kirik
Свернутый текст
Вообще-то вместо некрофила там сидел маньяк с репликой "зарезать"
)

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

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