#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 и расслабьтесь.