Mysql_connect kullanılacak new_link $ olmalıdır (?)

5 Cevap php

Ben Drupal üzerine inşa kalıtsal bir siteyi uyguluyorum. Şu anda veritabanına "çok sayıda bağlantı" yaşıyoruz.

/ Includes / database.mysql.inc dosyasında, @mysql_connect($url['host'], $url['user'], $url['pass'], TRUE, 2) (mysql_connect() documentation) veritabanına bağlanmak için kullanılır.

$new_link = TRUE kullanılmalıdır? Benim anlayış bu "her zaman yeni bir bağlantıyı açmak." Olmasıdır Bu "çok sayıda bağlantı" neden olabilir?

5 Cevap

Drupal sorunsuz birkaç yüksek performanslı sitelerinde çalışır. Örneğin, Grammy Ödülleri sitesi bu yıl Drupal geçti ve ilk defa site cerimony sırasında aşağı gitmedi! Bazı konfigürasyon kurulumu hakkında verdiği gerekiyor. Muhtemelen mysql.

Lütfen my.cfg düzenlemek ve mysql sunucusunu (fedora / etc / my.cfg, RH, * Buntu üzerinde centos ve / etc / mysql / my.cfg) yeniden başlatmanız

[mysqld] max_connections=some-number-here

alternatif, ilk sunucuyu yeniden başlatmadan değişiklik denemek, MySQL ve denemek için giriş:

show variables like 'max_connections' #this tells you the current number set global max_connections=some-number-here

Başka bir kişi dedi Oh, ve gibi: DO. NOT. EDIT. Drupal. CORE. Bu sitenizi güncel tutmak istiyorsanız, ödemek yok esnek baş ağrısına neden olabilir ve size zarar bir dünya getirebilir.

Düzenleme çekirdek bir hayır yok. Sen, sürüm yükseltme yaptım, ve bam, değişiklikler gone unutacaksınız.

MySQL, sadece orada herhangi bir RDBMS gibi herhangi bir zamanda kabul bağlantıların miktarını sınırlamak olacaktır. My.cnf yapılandırma dosyası max_connections yapılandırma altında sunucu için bu değeri belirtir. Bu yapılandırmayı değiştirebilirsiniz, ancak sunucu kapasitesine bağlı olarak gerçek sınırlamalar vardır.

Kalıcı bağlantılar, veritabanına bağlanmak için gereken zaman miktarını azaltarak yardımcı olabilir, ancak MySQL kabul edecek bağlantılarının toplam miktarı üzerinde bir etkisi yoktur.

MySQL bağlanmak ve 'SHOW PROCESSLIST' kullanın. Size şu anda açık bağlantıları ve ne yaptıklarını gösterecektir. Birden fazla bağlantı yolu çok uzun sürebilir sorguları boşta oturan ya da çalışan olabilir. Boşta bağlantıları için, sadece onları gerekmez zaman emin kodu açık bağlantıları tutmaz yapma meselesi olabilir. İkinci olarak, onlar sorgular çok uzun yapmayız böylece optimize edilmesi için gereken kod parçaları olabilir.

Tüm bağlantıların meşru iseniz, sadece mevcut yapılandırma için izin verdiğinden daha fazla yük var. MySQL yük bile geçerli bağlantı sayısı ile düşük ise, bunu biraz artırmak ve nasıl geliştiği görebilirsiniz.

Eğer özel bir sunucu üzerinde değilseniz, bu konuda çok şey yapmak mümkün olmayabilir. Sadece başkasının kod neden sorun olabilir.

Bazen, bu başarısızlıklar sadece geçicidir. Başarısız olduğunda, sadece birkaç milisaniye sonra bağlantıyı yeniden deneyebilirsiniz. Yine başarısız olursa, bu bir sorun olabilir ve komut durdurma yapmak için doğru şey olabilir. (Daha önce görmüştüm, korkunç bir fikir) sonsuz bir döngü içinde olduğunu koymayın.

Bilginize: Drupal ile kalıcı bağlantılarını kullanarak sorun istiyor. Kimse bildiğim kadarıyla o kullanır.

Eğer mysql_connect(), during 1 request, muhtemelen burada değil durum için birden fazla görüşme varsa new_link parametre sadece, etkisi vardır.

Ben her ziyaretçi için, DB, yeni bir bağlantı yapılacaktır çünkü, aynı anda sitenizi ziyaret çok kullanıcılar tarafından neden olduğunu sanıyorum.

Eğer sorun veritabanı sunucusunda stres, ama bağlantı sayısı ile değil çünkü bu, durumda, mysql_pconnect() might yardım olduğunu teyit edebilir. Ayrıca bu yol gitmek seçerseniz, sizin web sunucusu kurulum için geçerli olup olmadığını Persistent database connections görmek için okumalısınız.