Nie znalazłem nigdzie opisu podobnego problemu więc zwracam się do społeczności forum; być może ktoś zdoła mi pomóc uporać się z moim kłopotem, z którym walczę od dłuższego czasu i... zwyczajnie nie radzę sobie.
Są 2 maszyny, na obu jest Debian Etch wraz z Apache2 z obsługą php i mysql. Wszystko instalowane z paczek.
Pierwszy serwer powstał kilka miesięcy temu. Niestety, ma uszkodzony dysk i jestem zmuszony czym prędzej przenieść strony użytkowników na inną maszynę, która w tym celu powstała kilka dni temu.
Apache2 i dodatki instalowane z repo poprzez atp-get. Strony użytkowników korzystają z baz danych umieszczonych na zewnętrznych maszynach.
Teoretycznie konfiguracja drugiego serwera jest identyczna jak pierwszego, a jednak...nie.
Pierwszy świetnie się sprawuje, natomiast drugi... hmm.. są problemy.
Po przeniesieniu plików i testowym odpaleniu stron wyszły 2 problemy.
Serwer bardzo ładnie i szybko łączy się z bazami mysql na porcie 3306, natomiast gdy strona korzysta z mysql-a znajdującego się na innym porcie niż domyślny (np 3307 lub 3309) strona na kilka sekund zwiesza się. Włączyłem logowanie lecz w logach nic nie ma.
drugi problem to kodowanie. Bazy zewnętrzne są przeważnie w latin2. O ile pierwszy prawidłowo odczytuje kodowania, o tyle 2 coś miesza. Samo kodowanie znaków w plikach odczytywane jest prawidłowo, lecz w treściach zaczytywanych z bazy mysql zamiast polskich znaków są pytajniki
Poniżej przykład:
strona, która jest na pierwszym serwerze http://skiteam.pl
te same pliki, i ta sama zewnętrzna baza ale pliki na nowej maszynie http://skiteam.blee.pl (plik konfiguracyjny strony zmieniony tak, by strona pracowała pod tym adresem).
Reasumując:
2 serwery na 2 różnych maszynach o podobnej konfiguracji instalacja przez apt-get
Pierwszy, który powstał wcześniej - pracuje prawidłowo
Drugi, który powstał w zeszłym tygodniu bardzo wolno wykonuje zapytania do baz mysql na portach innych niż 3306, nie rozpoznaje w bazie danych kodowania innego niż utf8, np latin2 (chyba z góry zakłada, że jest to utf8 i nie pozwala sobie wytłumaczyć, że jest inaczej). Oba serwery nie wymuszają domyślnego kodowania (zakomentowane adddefaultcharset w apache.conf oraz puste default_charset w php.ini)
Nie ukrywam, iż zależy mi na szybkim rozwiązaniu problemu. Dlatego też jeśli potrzebne są dodatkowe informacje, proszę piszcie. Udostępnię.
Z góry dziękuję za zainteresowanie i okazaną pomoc
EDIT://
moje subiektywne odczucie:
drugi serwer bez problemu łączy się z bazą jeśli w pliku strony jest zdefiniowany adres serwera sql bez podanego portu czyli na domyślnym.
Natomiast jeśli plik konfiguracyjny zawiera adres_serwera_mysql ort, rozszerzenie php ignoruje port i próbuje wykonać zapytanie do serwera na domyślnym porcie, a dopiero gdy dostanie odmowę dostępu łączy się ponownie ale z uwzględnieniem 'port'.
Przy czym to mój domysł. Nie wiem jak to sprawdzić i jak to zmienić
//EDIT:
Już sobie poradziłem. Wystarczyło pomyśleć.
Opiszę zastosowane przeze mnie rozwiązanie na wypadek, gdyby ktoś miał podobny problem.
- W pliku konfiguracyjnym strony usuwamy port w adresie serwera mysql
- w pliku htaccess dopisujemy linijkę php_value mysql.default_port port_serwera_sql. Jeśli plik htaccess nie występuje - tworzymy go