PHP sorunu yeniden MySQLi

5 Cevap php

Ben PHP mysqli sınıfını kullanırken sorun yaşıyorum ve her yerde cevap bulmak mümkün olmamıştır.

Benim komut bir sınıf o fonksiyonları boyunca kullandığı bir mysqli bağlantı oluşturur. Daha sonra, bu komut çatal. Bağlantı yanı sıra çocuklar tarafından kullanılır, ama ben çocukları ölmek ebeveyn kapalı olan bağlantısı (MYSQL server has gone away) bir sorun haline çalıştırıyorum.

Ben (sadece mysql kullanıyordum) MySQLi geçiş yapmadan önce ben sadece db bağlantısı üst süreçte sorgu yapmadan önce orada olduğundan emin olmak için mysql_ping çağırdı. Mysqli benzer bir ping işlevi vardır ama bağlantı gitti ise aslında yeniden değil. Ben (php.ini ve ini_set kullanarak) hiçbir şans ile küresel ayar ON = mysqli.reconnect kullanarak çalıştı.

Php mysql_connect işlevi zaten varolan bir bağlantıyı kapmak sağlar, bu yüzden yerine mysqli'nin mysql kullanılarak olsaydı, ben sadece sağ çatallı sürecinden sonra çocuğun bağlantıyı yeniden olabilir. ANCAK mysqli böyle bir özelliğe sahip görünmüyor ...

Ben bunu başardı tek şey çağrı mysqli-> ping idi () ve false döndürdü eğer ebeveyn olarak veritabanına yeniden. Bu korkunç verimsiz olduğunu, ve ben daha ziyade mysqli'nin (ve manuel yeniden bağlanır gerek yok) ile doğru bir şekilde yapmak için nasıl anlamaya olduğunu geri mysql değiştirmek zorunda .. ederim

Herhangi bir öneriniz?

5 Cevap

mysqli_ping() için doc (php.ini) küresel seçeneğini mysqli.reconnect eğer 1 set bu bağlantı var algıladığında sonra mysqli_ping() yeniden söylüyor uzağa gitti.

http://www.php.net/manual/en/mysqli.real-connect.php ... php yeniden ve php.ini ayarlarınızı kontrol kullanın

u yerine ping .. "şimdi seçin ()" gibi çok basit bir düşük yoğunluklu sorguyu göndermek için çalışın ve daha iyi sonuçlar almak görmek .. biraz farklı bir şey deneyebilirsiniz.

Kalıcı bağlantı kullanmak değil mi? Ayrıca, bu gerçekten çatal gereklidir (?)

Seni çok php.ini daha, ben ini_set yoluyla yeniden değiştirmek yönetmek değil, ama benim sys admin my.cnf yaptım, mysql yapılandırma olduğu, my.cng yılında mysqli.reconnect ayarlamanız gerekir düşünüyorum.

Yani, tad diğerleri php.ini içinde bunu yapmış karıştı ....