- всегда, если PHP подключен как модуль и сервер многопоточный, а не prefork :) К сожалению PHP хреново работает с БД, так как если Вы не используете pconnect или он не работает, то при каждом обращении к скрипту создается новое соединение с БД, что занимает времени в 10-100 раз больше чем выполнение простого SQL-запроса. Из-за этого сильно просаживается производительность PHP-скриптов и pconnect пусть и кривой, но выход :)
- проблема, в Вашем хостере - видимо для него это непрофильное занятие :) У опытных хостеров настройки MySQL заметно отличаются от дефолтных ;)
- это хорошо, осталось узнать значение wait_timeout в MySQL :)
- судя по phpinfo - PHP подключен как модуль к Apache (как собран Apache отсюда не узнаешь), так что есть шансы что pconnect реально может работать
Brim.ru добавил 07.08.2008 в 01:32
- объясните как pconnect-у удается открыть несколько соединений при условии что данные для доступа к базе одинаковые (хост, логин, пароль)?
Цитата из документации:
- единственная возможная причина накопления соединений при использовании 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 просто не работает у Вашего хостера.
- не страдайте паранойей, мотивы хостера Вам в данном случае неизвестны. Реальная ситуация: клиент вводит "левые" почтовые данные, а потом требует акт выполненных работ с синей печатью - куда его слать? Еще ситуация: клиент вводит "левый" контактный телефон - подходит срок окончания делегирования домена, клиент не отвечает на электронные письма, денег на счету ноль, связаться по телефону невозможно, так как он "липовый" - результат: домен потерян.
- возможно жесткие требования хостера по адекватному заполнению контактных данных в Ваших интересах :)
- постоянный шум не напрягает?
+ 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);
- только сначала надо избавиться от заголовков которые пришли вместе с картинкой (один раз сохраните и сразу их увидите в файле)