Php oturumda mysqli bağlantı geçemez

3 Cevap php

Ben sitede birden fazla sorgu için mysqli bağlantısı olan bir oturum geçmek için çalışıyorum, ama bir uyarı çıktılar bir sorgu yapmaya çalıştığınızda "mysqli alınamadı"

$_SESSION['db']=new mysqli($host,$username,$password,$db);

Bu oturumda aracılığıyla bir mysqli bağlantı referans geçmek imkansız mı? kullanmak için farklı bir yöntem var mıdır?

3 Cevap

Evet, açıkça imkansızdır.

PHP Documentation here vurgulanan Uyarı söz bkz: "Some types of data can not be serialized thus stored in sessions. It includes resource variables or objects with circular references (i.e. objects which passes a reference to itself to another object)."

MySQL bağlantıları kaynak böyle bir türüdür.

Her sayfa kaçak yeniden zorunda.

Eğer mysql_pconnect() aracılığıyla bağlantı havuzu güveniyor, ama ilk this article içinde mysql_pconnect hakkında daha fazla arka plan bilgisi () görebilirsiniz eğer sesler gibi bu kadar kötü değil.

Veritabanı bağlantıları kaynaklarıdır ve bir oturumda saklanamaz. Her sayfada bağlantıyı yeniden, ya da bir persistent connection (PHP 5.3 +) kullanmak gerekecek.

Evet - Bir oturumu aracılığıyla geçemez. Sap isteğe özgüdür. Sen memcache gibi paylaşılan bir kaynağa koymak mümkün olacak, ve ihtiyacınız olduğunda kolu getir olabilir.

Ancak, eğer senin, bağlantı havuzu kullanan ihtiyacınız olduğunda, yeni bir tanıtıcı grabing (ve bitti zaman kapatmadan) büyük bir performans isabet değildir.

Her zaman sizin ihtiyaçlarınıza bağlıdır, ama evet, ben de ederim:

  • Eğer / istek başına / (bağlantı havuzu açmak) gerektiğinde yeni bir tanıtıcı oluşturmak
  • Memcache dbhandle sopa