dandandan: Не совсем понятно для чего тогда нужен mysql_pconnect если он не всегда перехватывает уже существующее соединение с БД, а создает новое при одинаковых логин/пароль/база.
- всегда, если PHP подключен как модуль и сервер многопоточный, а не prefork :) К сожалению PHP хреново работает с БД, так как если Вы не используете pconnect или он не работает, то при каждом обращении к скрипту создается новое соединение с БД, что занимает времени в 10-100 раз больше чем выполнение простого SQL-запроса. Из-за этого сильно просаживается производительность PHP-скриптов и pconnect пусть и кривой, но выход :)
dandandan: К сожалению сейчас ответить не смогу, админа в асе нету. Вот конфиг сервера http://hosting.totel.ru/phpinfo.php . Сам , к сожалению, не знаю чем отличается в PHP (CGI/модуль) и как собран Apache (prefork/multithreaded?)
- судя по phpinfo - PHP подключен как модуль к Apache (как собран Apache отсюда не узнаешь), так что есть шансы что pconnect реально может работать
Brim.ru добавил 07.08.2008 в 01:32
Dreammaker: mysql_pconnect нужно тюнинговать иначе max_user_connections забивается уже pconnect`ами только спящими (у которых превышено время ожидания). А это подразумевает и необходимость чистки этих спящих процессов
- объясните как pconnect-у удается открыть несколько соединений при условии что данные для доступа к базе одинаковые (хост, логин, пароль)?
Цитата из документации:
mysql_pconnect() работает аналогично mysql_connect() с двумя отличиями.
Во-первых, при соединении, функция пытается найти уже открытый (постоянный) указатель на тот же сервер с тем же пользователем и паролем. Если он найден, возвращён функцией будет именно он, вместо открытия нового соединения.
Во-вторых, соединение с SQL-сервером не будет закрыто, когда работа скрипта закончится. Вместо этого, оно останется рабочим для будущего использования (mysql_close() также не закрывает постоянные соединения)
- единственная возможная причина накопления соединений при использовании pconnect - это несколько запущенных экземпляров (процессов) web-сервера с подключенным php-модулем, что актуально для Apache собранного как prefork (но в этом случае в возникших проблемах виноват хостер, так как он должен настроить лимит соединений с БД равным настройке MaxClients в Apache)
- да, и конечно хостеру можно посоветовать уменьшить wait_timeout в MySQL, чтобы незакрытые коннекты не зависали слишком на долго :)
1. Используйте pconnect (правда смысл в его использовании есть только если PHP подключен как модуль, а не как CGI). pconnect не закрывает открытое соединение (mysql_close ничего не делает в этом случае), но и не открывает новое соединение, а использует уже созданное, т. е. в идеале у Вас будет одно соединение вместо 20
2. Создание нового соединения занимает довольно значительное время (в 10-100 раз больше чем время выполнения простого SQL-запроса), поэтому pconnect позволяет повысить производительность.
3. Уточните как подключен к серверу PHP (CGI/модуль) и как собран Apache (prefork/multithreaded?). Скорее всего pconnect просто не работает у Вашего хостера.
broken: поддержка прикопалась к индексу 1234567 - это не индекс москвы.
...
суть в другом. если я хочу ввести липовые данные - я их введу. и хрен кто докажет что они не липа пока скан паспорта не попросят.
- не страдайте паранойей, мотивы хостера Вам в данном случае неизвестны. Реальная ситуация: клиент вводит "левые" почтовые данные, а потом требует акт выполненных работ с синей печатью - куда его слать? Еще ситуация: клиент вводит "левый" контактный телефон - подходит срок окончания делегирования домена, клиент не отвечает на электронные письма, денег на счету ноль, связаться по телефону невозможно, так как он "липовый" - результат: домен потерян.
- возможно жесткие требования хостера по адекватному заполнению контактных данных в Ваших интересах :)
Вы поверили хостеру у которого нет юр. лица (на сайте информации не нашел), а нет юр. лица - само собой нет и лицензии на осуществление телематических услуг на территории РФ. Короче - поверили и зря, деловые отношения должны строиться на основе договора, а не доверия. Во всяком случае никаких законных претензий у Вас к ним быть не может 🙄 Какие претензии могут быть к тетке продающей в электричке пирожки и "свежее" пиво?
Не совсем понятно для чего тогда нужен mysql_pconnect если он не всегда перехватывает уже существующее соединение с БД, а создает новое при одинаковых логин/пароль/база.
- всегда, если PHP подключен как модуль и сервер многопоточный, а не prefork :) К сожалению PHP хреново работает с БД, так как если Вы не используете pconnect или он не работает, то при каждом обращении к скрипту создается новое соединение с БД, что занимает времени в 10-100 раз больше чем выполнение простого SQL-запроса. Из-за этого сильно просаживается производительность PHP-скриптов и pconnect пусть и кривой, но выход :)
Обещал уменьшить время. не думал что будет столько геммороя с mysql_pconnect .
- проблема, в Вашем хостере - видимо для него это непрофильное занятие :) У опытных хостеров настройки MySQL заметно отличаются от дефолтных ;)
Узнал у админа апач собран с multithreaded
- это хорошо, осталось узнать значение wait_timeout в MySQL :)
К сожалению сейчас ответить не смогу, админа в асе нету. Вот конфиг сервера http://hosting.totel.ru/phpinfo.php . Сам , к сожалению, не знаю чем отличается в PHP (CGI/модуль) и как собран Apache (prefork/multithreaded?)
- судя по phpinfo - PHP подключен как модуль к Apache (как собран Apache отсюда не узнаешь), так что есть шансы что pconnect реально может работать
Brim.ru добавил 07.08.2008 в 01:32
mysql_pconnect нужно тюнинговать иначе max_user_connections забивается уже pconnect`ами только спящими (у которых превышено время ожидания). А это подразумевает и необходимость чистки этих спящих процессов
- объясните как pconnect-у удается открыть несколько соединений при условии что данные для доступа к базе одинаковые (хост, логин, пароль)?
Цитата из документации:
Во-первых, при соединении, функция пытается найти уже открытый (постоянный) указатель на тот же сервер с тем же пользователем и паролем. Если он найден, возвращён функцией будет именно он, вместо открытия нового соединения.
Во-вторых, соединение с SQL-сервером не будет закрыто, когда работа скрипта закончится. Вместо этого, оно останется рабочим для будущего использования (mysql_close() также не закрывает постоянные соединения)
- единственная возможная причина накопления соединений при использовании pconnect - это несколько запущенных экземпляров (процессов) web-сервера с подключенным php-модулем, что актуально для Apache собранного как prefork (но в этом случае в возникших проблемах виноват хостер, так как он должен настроить лимит соединений с БД равным настройке MaxClients в Apache)
- да, и конечно хостеру можно посоветовать уменьшить wait_timeout в MySQL, чтобы незакрытые коннекты не зависали слишком на долго :)
1. Используйте pconnect (правда смысл в его использовании есть только если PHP подключен как модуль, а не как CGI). pconnect не закрывает открытое соединение (mysql_close ничего не делает в этом случае), но и не открывает новое соединение, а использует уже созданное, т. е. в идеале у Вас будет одно соединение вместо 20
2. Создание нового соединения занимает довольно значительное время (в 10-100 раз больше чем время выполнения простого SQL-запроса), поэтому pconnect позволяет повысить производительность.
3. Уточните как подключен к серверу PHP (CGI/модуль) и как собран Apache (prefork/multithreaded?). Скорее всего pconnect просто не работает у Вашего хостера.
поддержка прикопалась к индексу 1234567 - это не индекс москвы.
...
суть в другом. если я хочу ввести липовые данные - я их введу. и хрен кто докажет что они не липа пока скан паспорта не попросят.
- не страдайте паранойей, мотивы хостера Вам в данном случае неизвестны. Реальная ситуация: клиент вводит "левые" почтовые данные, а потом требует акт выполненных работ с синей печатью - куда его слать? Еще ситуация: клиент вводит "левый" контактный телефон - подходит срок окончания делегирования домена, клиент не отвечает на электронные письма, денег на счету ноль, связаться по телефону невозможно, так как он "липовый" - результат: домен потерян.
- возможно жесткие требования хостера по адекватному заполнению контактных данных в Ваших интересах :)
Друзья тоже не жалуются :)
- постоянный шум не напрягает?
он не отвечает на мои вопросы просьбы
+ 1 за наличие юр. лица
+ 1 за лицензию на телематику
Вы поверили хостеру у которого нет юр. лица (на сайте информации не нашел), а нет юр. лица - само собой нет и лицензии на осуществление телематических услуг на территории РФ. Короче - поверили и зря, деловые отношения должны строиться на основе договора, а не доверия. Во всяком случае никаких законных претензий у Вас к ним быть не может 🙄 Какие претензии могут быть к тетке продающей в электричке пирожки и "свежее" пиво?
1. Если страница формируется динамически, поправьте кодировку в заголовке Content-Type, например в PHP:
header('Content-type: text/html; charset=windows-1251');2. Если страницы статические копайтесь в настройках web-сервера (кодировка по умолчанию)
header("Content-Type: image/gif"); - при выводе поможет понять браузеру что речь идет о GIF-картинке, а не об HTML-коде
Для сохранения можно использовать запись в файл:
- только сначала надо избавиться от заголовков которые пришли вместе с картинкой (один раз сохраните и сразу их увидите в файле)