Brim.ru

Рейтинг
75
Регистрация
28.06.2008
Интересы
хостинг
dandandan:
Не совсем понятно для чего тогда нужен mysql_pconnect если он не всегда перехватывает уже существующее соединение с БД, а создает новое при одинаковых логин/пароль/база.

- всегда, если PHP подключен как модуль и сервер многопоточный, а не prefork :) К сожалению PHP хреново работает с БД, так как если Вы не используете pconnect или он не работает, то при каждом обращении к скрипту создается новое соединение с БД, что занимает времени в 10-100 раз больше чем выполнение простого SQL-запроса. Из-за этого сильно просаживается производительность PHP-скриптов и pconnect пусть и кривой, но выход :)

dandandan:
Обещал уменьшить время. не думал что будет столько геммороя с mysql_pconnect .

- проблема, в Вашем хостере - видимо для него это непрофильное занятие :) У опытных хостеров настройки MySQL заметно отличаются от дефолтных ;)

dandandan:
Узнал у админа апач собран с multithreaded

- это хорошо, осталось узнать значение wait_timeout в MySQL :)

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 - это не индекс москвы.
...
суть в другом. если я хочу ввести липовые данные - я их введу. и хрен кто докажет что они не липа пока скан паспорта не попросят.

- не страдайте паранойей, мотивы хостера Вам в данном случае неизвестны. Реальная ситуация: клиент вводит "левые" почтовые данные, а потом требует акт выполненных работ с синей печатью - куда его слать? Еще ситуация: клиент вводит "левый" контактный телефон - подходит срок окончания делегирования домена, клиент не отвечает на электронные письма, денег на счету ноль, связаться по телефону невозможно, так как он "липовый" - результат: домен потерян.

- возможно жесткие требования хостера по адекватному заполнению контактных данных в Ваших интересах :)

Alexei42:
Друзья тоже не жалуются :)

- постоянный шум не напрягает?

RSV:
он не отвечает на мои вопросы просьбы

+ 1 за наличие юр. лица

+ 1 за лицензию на телематику

Вы поверили хостеру у которого нет юр. лица (на сайте информации не нашел), а нет юр. лица - само собой нет и лицензии на осуществление телематических услуг на территории РФ. Короче - поверили и зря, деловые отношения должны строиться на основе договора, а не доверия. Во всяком случае никаких законных претензий у Вас к ним быть не может 🙄 Какие претензии могут быть к тетке продающей в электричке пирожки и "свежее" пиво?

1. Если страница формируется динамически, поправьте кодировку в заголовке Content-Type, например в PHP:

header('Content-type: text/html; charset=windows-1251');

2. Если страницы статические копайтесь в настройках web-сервера (кодировка по умолчанию)

header("Content-Type: image/gif"); - при выводе поможет понять браузеру что речь идет о GIF-картинке, а не об HTML-коде

Для сохранения можно использовать запись в файл:


$f=fopen('/dir/file.gif', 'w');
fwrite($f, $str);
fclose($f);

- только сначала надо избавиться от заголовков которые пришли вместе с картинкой (один раз сохраните и сразу их увидите в файле)

Всего: 908