Re: losing MySQL resource

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



I don't understand the process.  When session_start() reconnects to a (the)
session, objects saved as $_SESSION variables must be "recreated".  To do
this requires the class definition.  So the class definition must be loaded
prior to calling session_start().



Some other languages I've written in had a process called serialization
through which objects were saved.  And an opposite (deserialization?)
process through which objects were restored.  To have "persistent" objects
requires some way to "save" the objects for the next invocation of the
application (PHP in this case).  Deserialization necessarily requires the
template upon which the original object was built (the class definition).



I found http://us.php.net/serialize in the online PHP manual.  I also found
http://us.php.net/manual/en/language.oop5.autoload.php in the online PHP
manual (I have not tried autoload).



I simply moved the require_once("class_definitions.inc"); to appear
immediately before my session_start(); and everything worked thereafter.

"Nehemias Duarte" <NDuarte@xxxxxxxxx> wrote in message
news:2A10E35796E8A84FB782111FE5D3B30A03604B@xxxxxxxxxxxxxxxxxxxxxxx
I was under the impression that session_start() had to be the FIRST
thing ran in the script. Is this incorrect?


>>OK.  The secret, as has been stated here before, is to load the class
definitions BEFORE calling session_start().  Thanks to everyone.

""Andy Shellam (Mailing Lists)"" <andy-lists@xxxxxxxxxxxxxx> wrote in
message news:3339C510-BE08-4426-9265-BA1965A9ADDF@xxxxxxxxxxxxxxxxx
> Hi Stan,
>
> Are you saving the instance of your class in $_SESSION?
>
> Class instances can be persisted across sessions, however resources
> (i.e. MySQL and other DB connections) cannot.  What you need to do, is
> every method in your wrapper class that uses the MySQL resource needs
> to check if it's a valid resource (is_resource() springs to mind.)
>
> If it isn't valid, you need to re-create it (using mysql_connect).
>
> The reason for this is that PHP isn't running between session
> requests, so it cannot maintain and monitor the database connection
> across requests.
>
> Andy
>
> On 9 November2009, at 21:11, Stan wrote:
>
> > I got as far as creating a class to be the wrapper ... instantiating
> > an
> > object of that class ... saving the reference in a $_SESSION
> > variable ...
> > but my object reference seems to be invalid upon the next request
> > (in the
> > same session) from the client browser.  What have I missed?
> >
> > Thanks,
> > Stan
> >
> > ""Andy Shellam (Mailing Lists)"" <andy-lists@xxxxxxxxxxxxxx> wrote
in
> > message news:FD8200B0-E18A-4AFD-8FFC-F51080621BB4@xxxxxxxxxxxxxxxxx
> >> Hi,
> >>
> >> I got around this by creating a database wrapper class which gets
> >> passed the credentials from the app's config file.  An instance of
> >> the
> >> class is created and saved in the session, and every query to the
> >> database runs through the class's Query() wrapper method which
checks
> >> if the connection is alive and valid - if it isn't, it reconnects
it
> >> before running the query.
> >>
> >> Andy
> >>
> >> On 9 November2009, at 16:46, Stan wrote:
> >>
> >>> How do I make an Object persistant for the duration of a Session?
> >>> Thanks,
> >>> "Chris" <dmagick@xxxxxxxxx> wrote in message news:4AB6B16C.
> >>> 8@xxxxxxxxxxxx
> >>>> Niel Archer wrote:
> >>>>>> I'm maintaining a session.  I successfully connect to a
database
> >>> ($DBConnect
> >>>>>> = mysql_connect()).  I save the connection resource in a
session
> >>> variable
> >>>>>> ($_SESSION['connection'] = $DBConnect) ... to use in subsequent
> >>> queries.  It
> >>>>>> remains valid while the user is on the current page.
> >>>>>> print_r($_SESSION['connection']) yields 'Resource id #3', for
> >>>>>> instance.
> >>>>>>
> >>>>>> User browses to a new page ... in the same session.
> >>> $_SESSION['$DBConnect']
> >>>>>> no longer references a valid mysql resource.
> >>>>>> print_r($_SESSION['connection']) yields '0'.
> >>>>>>
> >>>>>> Other "ordinary" values saved in $_SESSION variables remain
> >>>>>> valid.
> >>>>>>
> >>>>>> Is there something special about a mysql resource?
> >>>>>
> >>>>> Not about the resource itself, no. PHP closes connections to a
Db
> >>>>> when a
> >>>>> script ends, unless the connection is persistent, so while the
> >>>>> resource
> >>>>> IS saved, the connection to which it refers no longer exists.
> >>>>
> >>>> No resources (whether they are persistent or not) can be stored
in
> >>>> the
> >>>> session.
> >>>>
> >>>> http://www.php.net/manual/en/intro.session.php
> >>>>
> >>>> The big pink box has more info.
> >>>>
> >>>> -- 
> >>>> Postgresql & php tutorials
> >>>> http://www.designmagick.com/
> >>>>
> >>>
> >>>
> >>>
> >>> -- 
> >>> PHP Database Mailing List (http://www.php.net/)
> >>> To unsubscribe, visit: http://www.php.net/unsub.php
> >>>
> >>>
> >>
> >
> >
> >
> > -- 
> > PHP Database Mailing List (http://www.php.net/)
> > To unsubscribe, visit: http://www.php.net/unsub.php
> >
> >
>



-- 
PHP Database Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php
Confidentiality Notice:
This e-mail and any attachments may contain confidential information
intended solely for the use of the addressee.  If the reader of this message
is not the intended recipient, any distribution, copying, or use of this
e-mail or its attachments is prohibited.  If you received this message in
error, please notify the sender immediately by e-mail and delete this
message and any copies. Thank you.



-- 
PHP Database Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php


[Index of Archives]     [PHP Home]     [PHP Users]     [Postgresql Discussion]     [Kernel Newbies]     [Postgresql]     [Yosemite News]

  Powered by Linux