开发者

Can't pass mysqli connection in session in php

I'm trying to pass a session with mysqli connection for multiple queries on the site, but when I try to do a query it outputs a warning "Couldn't fetch mysqli"

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

Is it impossible to pass a mysqli connection reference thru session? is there a different 开发者_开发技巧method to use?


Yes, it is explicitly impossible.

See PHP Documentation here mentioning in a highlighted Warning: "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 connections are one such kind of resource.

You have to reconnect on each page run.

This is not as bad as it sounds if you can rely on connection pooling via mysql_pconnect(), but first see more background info on mysql_pconnect() in this article.


Database connections are resources and can't be stored in a session. You'll have to rebuild the connection in every page, or use a persistent connection (PHP 5.3+).


Yeah - you can't pass it through a session. The handle is specific to the request. You might be able to put it in a shared resource like memcache, and fetch the handle when you need it.

However, if your using connection pooling, grabing a new handle when you need (and closing it when your done) isn't a large performance hit.

Always depends on your needs, but yeah, I'd either:

  • Create a new handle when you need it /per request/ (turn on connection pooling)
  • Stick the dbhandle in memcache
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜