Помогите расставить точки над I в вопросе pconnecta. Пожалуста...

Бочонок

http://frontender.info
Помогите расставить точки над I в вопросе pconnecta. Пожалуста...

Доброго времени суток.

Извините что поднимаю больную, судя по всему, тему. Поиском я естественно попользовался и постарался понять информауию полученную из предидущих топиков.

Собственно моя просьба - помогите разобратся в "теории" (Исходя из того что все это работает на UNIX хостинге)

Насколько я понял в случае pconnect :
на каждый чайлд апача (а он создается насколько я понимаю при каждом запросе к серверу) создается соединение которое не убивается после завершения работы скрипта.
Если соединение для этого чайлда уже существует и используется, то создается новое.
Если соединение для этого чайлда уже существует и не используется то именно оно и используется.
И так продолжается до тех пор пока количество незакрытых соединений не сравняется с максимально разрешонным для этого пользователя количеством соединений. Пользователем является как правило сайт.

Тут появляется вопросы:

1. Поскольку не умирает соединение с MySQL чайл апача тоже не умирает ?
2. Если для каждого запроса к серверу создается новый чайлд апача то существующие не используются ? Или используются ? Если используются то по какому принципу ?
3. Если существующие чайлды апача не используются то как вообще используются некакрытые соединения ?
4. Количество незакрытых соединений считается как сумма всех незакрытых соединений для всех чайлдов апача ?
(То есть если есть 3 чайлда в первом 1 незакрытое соединение, во втором 2 а в третьем 5, то общее количество незакрытых соединений 8 ?)
5. Где то он вообще используется ? В каких случаях его НАДО применять ?

Я очень надеюсь на вашу подсказку или указание на ман где это ВРАЗУМИТЕЛЬНО описано...
Заранее спасибо за ответ.
С уважением. Бочонок.
 

tony2001

TeaM PHPClub
>Насколько я понял в случае pconnect :
>на каждый чайлд апача (а он создается насколько я понимаю при каждом запросе
>к серверу)
нет, если MaxRequests больше 1-го.

>создается соединение которое не убивается после завершения работы
>скрипта.
да.

>Если соединение для этого чайлда уже существует и используется, то создается
>новое.
нет.
с чего бы это?
кто его может использовать кроме твоего единственного скрипта, который выполняется в данный момент времени?

>Если соединение для этого чайлда уже существует и не используется то именно
>оно и используется.
всегда используется, если ты новых не создаешь принудительно.

>И так продолжается до тех пор пока количество незакрытых соединений не
>сравняется с максимально разрешонным для этого пользователя количеством
>соединений. Пользователем является как правило сайт.
чайлды имеют свойство периодически рождаться и умирать.
при смерти чайлда закрываются и все ресурсы, включая persistent connections.

>1. Поскольку не умирает соединение с MySQL чайл апача тоже не умирает ?
у тебя каша в голове.
зависимость прямо противоположная - пконнект не закрывается пока жив чайлд.

>2. Если для каждого запроса к серверу создается новый чайлд апача то
не создается для каждого запроса чайлд.
это слишком затратно.

>существующие не используются ? Или используются ? Если используются то по
>какому принципу ?
используются.
тебе должно быть без разницы по какому принципу - "какой-то" чайлд обрабатывает твой запрос.
может быть, тот же, что и обработал предыдущий.
а может и нет.

>3. Если существующие чайлды апача не используются то как вообще используются
>некакрытые соединения ?
уже сказал.

>4. Количество незакрытых соединений считается как сумма всех незакрытых
>соединений для всех чайлдов апача ?
не понял вопроса.

поконнект заново не открывается, если коннект с такими логином/паролем/хостом уже открыт.

>5. Где то он вообще используется ? В каких случаях его НАДО применять ?
вообще всё НАДО применять - когда есть осознанная необходимость.
если её нет или ты не понимаешь о чем речь - зачем задаваться таким вопросом вообще?
 

Romantik

TeaM PHPClub
У меня вопрос в добавок к вышезаданному:
Как идет работа с временными таблицами при pconnect?
Можно ли расчитывать на их "живучесть" при работе нескольких скриптов?
 

tony2001

TeaM PHPClub
тут подобное обсуждение

Romantik
логика следующая:
1) временные таблицы существуют для конкретного коннекта.
2) ты не знаешь какой чайлд будет обрабатывать твой запрос в следующий раз.
3) исходя из 2) ты не знаешь какой коннект тебе попадется в следующий раз.
4) ответ понятен?
 

si

Administrator
Romantik
нет никакой лажи, его надо юзать умеючи и там где он нужен реально.
 

Romantik

TeaM PHPClub
В большинстве случаев- не нужен!
Я как то случайно "попал" на тормоза при использовании pconnect (PEAR+PostgreSQL) и долго не мог определить почему так, пока несделал ps ax и ужаснулся увиденному.
 

Бочонок

http://frontender.info
пконнект заново не открывается, если коннект с такими логином/паролем/хостом уже открыт.
1. А если в это же время (когда скрипт использует это соединение) к тому же скрипту обращается еще один пользователь, то создается новое соединение, да ?

2. Таким образом ошибка с превышением максимального количества соединений (пусть их будет 25) возникает только если одновременно будут выполнятся 25 скриптов использующих подключение к базе данных и кто то вызовет 26ой ?

3. Соединение "занято" пока исполняется скрипт ?


4. Максимальное количество пользователей которое мы указываем в настройках MySQL определяетя для каждого чайлда апача ? или для всех в сумме ? то есть если у нас есть два чайлда (при максимальном количестве соединений 20) в каждом обрабатываются по 10 скриптов требующих постоянное соединение и один из этих чайлдов попытается обработать еще один скрипт требующий соединения с бд то произойдет ошибка ?

надо юзать умеючи и там где он нужен реально
5. Обьясните пожалуста в каких случаях он нужен ? Тоесть когда его использовать ?
 

si

Administrator
1. А если в это же время (когда скрипт использует это соединение) к тому же скрипту обращается еще один пользователь, то создается новое соединение, да ?
нет
2. Таким образом ошибка с превышением максимального количества соединений (пусть их будет 25) возникает только если одновременно будут выполнятся 25 скриптов использующих подключение к базе данных и кто то вызовет 26ой ?
нет
3. Соединение "занято" пока исполняется скрипт ?
да
4. Максимальное количество пользователей которое мы указываем в настройках MySQL определяетя для каждого чайлда апача ? или для всех в сумме ? то есть если у нас есть два чайлда (при максимальном количестве соединений 20) в каждом обрабатываются по 10 скриптов требующих постоянное соединение и один из этих чайлдов попытается обработать еще один скрипт требующий соединения с бд то произойдет ошибка ?
хватить гадать а ?
Обьясните пожалуста в каких случаях он нужен ? Тоесть когда его использовать ?
в случае выделенного сервера под mysql, и при очень больших нагрузках и правильной архитектуре всей системы и правильных настройках ...
 

Бочонок

http://frontender.info
1. Обьясните пожалуста в каком случае открывается новое постоянное соединение.

2. В каком случае возникает ошибка превышения максимального количества соединений ?

3.
хватить гадать а ?
И все же если не сложно обьясните пожалуста. Может быть хоть в ман отправите ?

Максимальное количество пользователей которое мы указываем в настройках MySQL определяетя для каждого чайлда апача ?

4. в случае выделенного сервера под mysql - по тому что при незакрытых соединениях копии мускула находятся в ОЗУ ?

5.
очень больших нагрузках
Имеется в виду большое количество соединений с бд за промежуток времени ? Вы не могли бы указать порядок.

С Уважением. Бочнок. Большое спасибо за ответы.
 

si

Administrator
Обьясните пожалуста в каком случае открывается новое постоянное соединение.
если в данном child апаче нет такого конекта.
2. В каком случае возникает ошибка превышения максимального количества соединений ?
при превышении максимального кол-во соединений
Максимальное количество пользователей которое мы указываем в настройках MySQL определяетя для каждого чайлда апача ?
не кол-во пользователей, а кол-во конектов, оно указывается для сервера mysql, mysql ничего не знает про апача? и ему все равно кто к нему конектится, главное кол-во соединений.
в случае выделенного сервера под mysql - по тому что при незакрытых соединениях копии мускула находятся в ОЗУ ?
потому что там вы сами можете настроить ограничения на кол-во соединений
Имеется в виду большое количество соединений с бд за промежуток времени ? Вы не могли бы указать порядок.
сотни в секунду.
 

tony2001

TeaM PHPClub
>1. Обьясните пожалуста в каком случае открывается новое постоянное соединение.
зависит от фаз луны и от положения Сатурна по отношению к Венере.
но обычно - при вызове соотв-щей функции.

>2. В каком случае возникает ошибка превышения максимального количества
>соединений ?
я дал ссылку на тред в жж.

>Имеется в виду большое количество соединений с бд за промежуток времени ? Вы
>не могли бы указать порядок.
- "Много" это сколько?
- Если идти по рельсам и считать шпалы, то когда дойдешь до "ну его нахрен" - это только половина.
 
Сверху