|
Posted by tg-php on 10/10/05 20:09
Ok, first let me disclaim that there are definitely a lot of people a lot smarter than me out there who may have figured this one out already, but as far as I know, resources like open file handles, database connection handles, objects, etc.. but especially anything that returns a resource number are not going to be carried over from one script execution to another.
If I recall properly, lets say script1.php opens a file, that's resource #1, then it opens a database connection, that's resource #2, etc..
Now let's say script2.php opens a database connection first, that's resource #1 for that script, then opens another database connection, that's resource #2, now it opens a file, that's resource #3..
So the 'resource' number isn't tied to a certain type of handle (file, db connection, etc), it's based on the order of resources allocated.
That's only semi-related to what you're talking about, but thought it was worth mentioning.
But I believe all of these resources are freed up as soon as the script finishes executing thereby necessitating re-opening files, db connections, recreating objects, (maybe objects can be serialized, I forget) when the next script is executed. No carry-over possible.
The solution? Don't exit the script. Unfortunately in an web environment you can't really keep a php script executing unless you create a php based server that your scripts connect to (doesn't have to be php based really.. just any server that listens and can keep files open for as long as they're needed).
Or maybe try to consolidate your file operations, in this case, so you can do it all in one pass. Don't open a file, read one little thing, close it... re-open it.. read something else... close it.. user makes changes.. opens file again.. writes changes.. closes it. read once and write once.. See if you can streamline it somehow.
Just some thoughts off the top of my head. Again, maybe someone else has a better answer, but I can't see how you'd avoid opening and closing each time unless you had a back-end server type program running.
-TG
= = = Original message = = =
Ben,
If you grab the resource and store it in a variable, you certainly should be
able to send it via GET or POST. For that matter, you should be able to
store the information in a SESSION variable too, so I'm not sure what is
going wrong. Could you email the code you are using to grab the resource
variable and the code to store it in a session?
- Jeff
-----Original Message-----
From: Benjamin Mack [mailto:benni@mediales.de]
Sent: Monday, October 10, 2005 11:03 AM
To: php-general@lists.php.net
Subject: [PHP] Having resource variables over several scripts
Hey,
I am trying to have e.g. a file opened over several scripts. When
opening a file with "fopen" I receive a variable of the type resource
(like "Resource ID #3"), but when I try to save this variable in the
SESSION and try to use it on another page, I get a "null" variable.
Because I need to have the same and exact resource (not opened every
time I load a new page) and since it is apparently not possible to store
it in a session, I wanted to ask if somebody had the same issue once,
and maybe there is some help out there.
Could I somehow serialize the resource, then give it to another page via
GET or POST?
I would really appreciate if somebody has some hints...
Thanks,
benni.
-SDG-
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php
___________________________________________________________
Sent by ePrompter, the premier email notification software.
Free download at http://www.ePrompter.com.
Navigation:
[Reply to this message]
|