- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Все что нужно знать о DDоS-атаках грамотному менеджеру
И как реагировать на "пожар", когда неизвестно, где хранятся "огнетушители
Антон Никонов
В 2023 году Google заблокировал более 170 млн фальшивых отзывов на Картах
Это на 45% больше, чем в 2022 году
Оксана Мамчуева
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Может быть вопрос дурацкий, но плохо знаю связку пыхи и мускуля, потому лучше спрошу...
Вариант кода:
// коннект к серверу
if (!($mydb = mysql_connect($mysql_host, $mysql_user, $mysql_pass)))
die('mysql_connect: Unable to connect to server');
// выбираем базу
if (!mysql_select_db($mysql_database))
die('mysql_select_db: '.mysql_error($mydb));
// запрос
if (!($answ = mysql_query($query, $mydb)))
die('mysql_query: '.mysql_error($mydb));
// закрываем коннект
mysql_close($mydb);
while ($row = mysql_fetch_array($answ)) {
// делаем то что нам надо
}
// освобождаем память
mysql_free_result($answ);
Те же яйца, "вид сбоку":
while ($row = mysql_fetch_array(db($query))) {
// делаем то что нам надо
}
unset($answ);
function db($query){
// коннект к серверу
if (!($mydb = mysql_connect($mysql_host, $mysql_user, $mysql_pass)))
die('mysql_connect: Unable to connect to server');
// выбираем базу
if (!mysql_select_db($mysql_database))
die('mysql_select_db: '.mysql_error($mydb));
// запрос
if (!($answ = mysql_query($query, $mydb)))
die('mysql_query: '.mysql_error($mydb));
// закрываем коннект
mysql_close($mydb);
return($answ);
}
Вопрос: Происходит ли, при выходе из функции db(), освобождение памяти, которое в первом случае делается явно в виде mysql_free_result?
Иначе говоря если я во втором случае сделаю unset($answ); будет ли ситуация с памятью полностью аналогична первому варианту, или под мускул отдельно что-то резервируется?
В первом случае очищается вся память, связанная с запросом. Во втором случае удаляется идентификатор запроса. Если вы не работаете в цикле с большими объёмами данных в бд, то эта функция не имеет смысла, т.к. при завершении скрипта вся память, которую он занял, будет очищена и так (у вас же не mysql_pconnect)
Что-то вы курите. нельзя закрывать соединение до тех пор пока не получены данные.
Если это и работает, то только потому что php действительно буферизирует данные.
Попробуйте использовать mysql_unbuffered_query() если для вас так важна экономия памяти PHP (но не в mysql). И да, mysql_close() все освобождает.