PHP bağlantı havuzu

5 Cevap php

Eğer bir J2EE kap içinde yaptığınız gibi PHP kullanarak veritabanı bağlantıları önbelleğe mümkün mü? Eğer öyleyse, nasıl?

5 Cevap

There is no connection pooling in php.
mysql_pconnect and connection pooling are two different things. There are many problems connected with mysql_pconnect and first you should read the manual and carefully use it, but this is not connection pooling.

Bağlantı havuzu uygulama sunucusu bağlantılarını yöneten bir tekniktir. Sonra app uygulama sunucusuna bir bağlantı gerektirir ve sunucu bir başvuru döndürür.

Yani hiçbir bağlantısı php havuzu.

Istek geçerli reques sona erdiğinde Julio apache bültenleri tüm kaynaklar dediği gibi. Sen mysql_pconnect kullanabilirsiniz ama bu fonksiyonu ile sınırlıdır ve çok dikkatli olmak gerekir. Diğer seçim singleton deseni kullanmak için, ama bu hiçbiri havuzu edilir.

Bu iyi bir yazıdır: http://blogs.oracle.com/opal/2007/01/highly_scalable_connection_poo.html

Ayrıca bu bir okuma http://www.apache2.es/2.2.2/mod/mod_dbd.html

Ben mod_php kullanıyorsanız herhalde, değil mi?

Bir PHP dosyası bir devletin tüm öldürüldüğü yürütülmesi tamamlandığında böylece bağlantı havuzu yapmak için (PHP kodu) yolu yoktur. Bunun yerine uzantıları dayanmak zorunda.

You can mysql_pconnect, böylece sayfa bittikten sonra bağlantıları, onlar bir sonraki istekte yeniden olsun bu şekilde kapalı almazsınız.

Bu, tüm ihtiyacınız olabilir ama açılmış korumak için bağlantı sayısını belirtmek için bir yolu var gibi bu bağlantı havuzu olarak aynı değildir.

Şerefe.

Kalıcı bağlantılar bağlantı havuzu gibi bir şey vardır. Birden db aynı istek / script yürütme bağlamında bağlayan yaparsanız php kalıcı bir bağlantı, yalnızca yeniden edilecektir. En tipik web dev senaryolarda edeceğiz bağlantılarınız yolu daha hızlı komut sonraki istek üzerine herhangi bir açık bağlantıları bir başvuru almak için hiçbir yolu yoktur, çünkü siz mysql_pconnect kullanırsanız dışarı max. Php db bağlantıları kullanmak için en iyi yolu bağlantısı komut yürütme bağlamında yeniden böylece bir db nesnesi bir tek örneğini yapmaktır. Bu hala en az 1 db istek başına bağlamak doğurur, ancak birden çok db reqeust başına bağlayan yapmak daha iyidir.

There is no real db connection pooling in php due to the nature of php. Php is not an application server that can sit there in between requests and manage references to a pool of open connections, at least not without some kind of major hack. I think in theory you could write an app server in php and run it as a commandline script that would just sit there in the background and keep a bunch of db connections open and pass references to them to your other scripts, but I don't know if that would be possible in practice, how you'd pass the references from your commandline script to other scripts, and I sort of doubt it would perform well even if you could pull it off. Anyway that's mostly speculation. I did just notice the link someone else posted to an apache module to allow connection pooling for prefork servers such as php. Looks interesting: https://github.com/junamai2000/mod_namy_pool#readme

Elle bağlantı havuzları başlatamazsınız.

Ama kullanabileceğiniz mysql_pconnect fonksiyonu ile bağlantı havuzu "yerleşik".

Sen kullanabilirsiniz MySQLi.

Daha fazla bilgi için, Connection pooling bölümünde @ http://www.php.net/manual/en/mysqli.quickstart.connections.php#example-1622 aşağı kaydırma

Bağlantı havuzu da sunucu (yani Apache) ve yapılandırma bağımlı olduğunu unutmayın.