почему dreamweaver генерирует постоянные соединения с mysql, но не выполняет очистку после себя?

#php #mysql

#php #mysql

Вопрос:

Как в названии:

Использование deamweaver 11.5 сборка 5315

Если вы создаете соединение через графический интерфейс, а не кодируете его самостоятельно, он использует mysql_pconnect() функцию для подключения к базе данных.

Позже, когда вы включаете этот файл подключения на одну из своих страниц и запускаете запрос, он добавляет mysql_free_result() вызовы в нижней части страницы, но не добавляет mysql_close() вызов для постоянного соединения, которое он открыл ранее.

Это привело к закрытию сайта, который я разрабатываю, и которым пользовались всего около 4 человек, пока я не заметил ‘p’ в mysql_pconnect()

Итак, это что-то, что я сделал неправильно, или Dreamweaver делает это специально, и когда / как он очищает соединение, если вообще когда-либо?

РЕДАКТИРОВАТЬ: и это лучшая практика или нет (я думаю, что нет)?

РЕДАКТИРОВАТЬ: dreamweaver 11.5 не 1.5, извините

Комментарии:

1. Я знаю, что некоторые версии dreamweaver добавляют mysql_close() в нижней части файла. Его там нет?

2. нет. кроме того, согласно руководству, mysql_close() не закрывает постоянные соединения (только что выяснил это)… uk.php.net/manual/en/function.mysql-pconnect.php

3. Тогда, да. Это плохая практика. Некоторые версии MySQL также не очень хорошо обрабатывают постоянные соединения и заставляют их медленно накапливаться и загромождать систему.

4. да, это именно то, что произошло с нашим сайтом, mysql получил слишком много подключений, поскольку время ожидания истекло навсегда, и 4 человек на сайте одновременно было достаточно, чтобы отключить его. досадно, что, согласно документам в mysql_connect() , он должен просто выбрать тот же самый и использовать его снова — но, похоже, вместо этого он генерирует больше. :@

Ответ №1:

mysql_connect устанавливает постоянное соединение. mysql_connect устанавливает «обычное» соединение, при котором сокет закрывается по завершении сценария.

Если вы выполняете много запросов за небольшой промежуток времени, вам следует использовать mysql_connect. Однако, если это не так, вам следует использовать mysql_connect.

Комментарии:

1. ну, это то, что я в итоге сделал. Подумав об этом, я понял, что DW, вероятно, использует постоянные соединения по умолчанию либо потому, что это раньше было хорошим способом сделать это, либо потому, что oracle и другие, похоже, справляются с ними лучше. короче говоря, если вы когда-нибудь получите слишком много соединений, удалите p из mysql_connect и расслабьтесь.