Mysql bağlantılarını verimli bir şekilde kapatmak çok önemli mi, yoksa php dosyası çalıştıktan sonra otomatik olarak mı kapanıyor?
Mysql bağlantılarını verimli bir şekilde kapatmak çok önemli mi, yoksa php dosyası çalıştıktan sonra otomatik olarak mı kapanıyor?
Yanıtlar:
Gönderen belgeler :
Not: Açıkça mysql_close () çağrısıyla daha önce kapatılmadığı sürece, betiğin yürütülmesi biter bitmez sunucuya olan bağlantı kapatılacaktır.
Komut dosyanızın sonucu getirdikten sonra gerçekleştirmesi gereken makul miktarda işlem varsa ve tüm sonuç kümesini aldıysa, kesinlikle bağlantıyı kapatmalısınız. Bunu yapmazsanız, web sunucusu yoğun kullanımda olduğunda MySQL sunucusunun bağlantı sınırına ulaşma ihtimali vardır. MySQL bağlantısını betiğin sonuna kadar kapatamazsanız, bunu açıkça yapmak gereksiz olsa da daha temizdir.
Fastcgi'nin işleri ne kadar etkilediğinden emin değilim. Bir sayfa , fastcgi'yi destekleyen bir PHP yapısının mysql_connect için bile kalıcı bağlantılar oluşturacağını iddia ediyor. Bu, komut dosyası yerine işlem sona erdiğinde bağlantının kapatılması nedeniyle belgelerle çelişir. Test etmek yerine, mysql_close () kullanmanızı tavsiye edeceğim. Aslında, varsa PDO'yu kullanmanızı öneririm .
"The link to the server will be closed as soon as the execution of the script ends."Kullanıcı bir sayfayı erken kapattığında, PHP sunucusunun önemi yoktur. Komut dosyasını her zaman olduğu gibi çalıştırır ve komut dosyasını her zaman olduğu gibi bitirir. Yalnızca kullanıcı sonucu görmez.
Çok önemli mi? Çok değil
İzlenmesi iyi bir uygulama olarak kabul ediliyor mu? Evet.
Neden kapatmak istemediğini anlamıyorum.
mysql_close"mysql_close () kullanmak genellikle gerekli değildir, çünkü kalıcı olmayan açık bağlantılar komut dosyasının yürütülmesinin sonunda otomatik olarak kapatılır." Bağlantıyı kapatmamanın gerçekten kötü bir uygulama olduğunu düşünmüyorum.
Cgi gibi bir şey kullanırken, mysql bağlantılarınızı, komut dosyası yürütmenin sonunda otomatik olarak kapandıkları için kapatmak tamamen gereksizdir. Mod_perl ve diğerleri gibi istekler arasındaki bağlantılarınızı koruyan kalıcı teknolojileri kullanırken, bağlantıları, global değişkenleri vb. Takip etmek önemlidir.
Temel olarak, kalıcı veriler için kendinizden sonra temizleyin. Önemsiz, kalıcı olmayan veriler için, istek yine de bittiğinde hepsi kaybolur. Her iki durumda da, en iyi uygulama bağlantılarınızı her zaman kapatmaktır.
Komut dosyası yürütmeyi tamamlar tamamlamaz kapanır. Kalıcı bir bağlantı açmadıysanız. İdeal olarak, işiniz biter bitmez bir kaynağı (burada bir bağlantı) serbest bırakmalısınız. Yürütme sırasında çok yakında tekrar ihtiyaç duyma şansınız olmadıkça.
Tek bir veritabanı sunucusunun arkasındaysanız, bağlantı havuzu oluşturma veya kalıcı bağlantılar kullanma (kastettiğiniz buysa) iyi bir fikirdir. Bununla birlikte, daha fazla sunucu varsa ve yük dengeleme yapıyorsanız, iş dağıtımına zarar verebilir. Tipik olarak bazı istemciler ağır sorgular çalıştırırken diğerleri daha hafif sorgular çalıştırır. Bu nedenle, aynı bağlantı n üzerinde kullanılırsa, bazı sunucular ağır yüke maruz kalırken, diğerleri az kullanılır. Daha küçük ttls ve değişken bağlantı havuzu boyutu kullanmayı düşünün.
Çoğu CMS, isteğin sonunda MySQL bağlantısını kapatır, ki bu gerçekten anlamsız çünkü PHP bunu zaten yapacak.
Bununla birlikte, bağlantının artık gerekli olmadığı bir betiğiniz varsa, betiğin ortasına doğru söyleyin ve ardından başka ağır faaliyetler meydana gelirse, bağlantıyı açıkça kapatmak iyi bir fikirdir. Bu, bazı kaynakları serbest bırakacaktır.
Şimdi, bir bağlantıyı kapatmanın faydaları hakkında çok şey söylendi, ancak kapatmamanın faydaları hakkında neredeyse hiçbir şey söylenmedi. Esasen, bir komut dosyasının sonunda bağlantıyı kapatmazsanız, gerçekten bazı kaynaklardan tasarruf etmiş olursunuz. Saniyede 100 sayfa görüntüleme alan bir web uygulamasını (veya herhangi bir uygulamayı) hayal edin. Bu nedenle, her saniye, mysqli_close100 kez çağırmanız gerekecek - bu, her saniyede, açık bağlantıları kapatmak için veritabanı sunucusuna 100 gereksiz gidiş dönüş yapmanız gerektiği anlamına gelir. Performans açısından bakıldığında, bu tamamen ek yüktür, çünkü PHP yine de betik bittiğinde açık bağlantıları kontrol edecek ve bu bağlantıları kapatacaktır ve her şey o kadar hızlı gerçekleştiği için PHP sizin sahip olduğunuzu göremeyebilir. bu bağlantıları kapattı ve tekrar kapatmayı deneyecek.
Not: Yukarıdaki cevap, kalıcı bağlantılar kullanmadığınızı varsayar (kalıcı bağlantılar, ana CMS'lerin hiçbirinde kullanılmaz).