Ok, this is interesting... I found the problem. It has to do with cookies. I do not have an answer.
If you change $seconds = (60 * 60 * 24 * 30); Zend_Session::rememberMe($seconds); to $seconds = (60 * 60 * 24 * 30); //Zend_Session::rememberMe($seconds); The problem goes away whether you are using Zend_Session_SaveHandler_DbTable or the default handler. I am not sure if this is a bug or the functions are just incompatible... $saveHandler = new Zend_Session_SaveHandler_DbTable($config, $db); //cookie persist for 30 days $seconds = (60 * 60 * 24 * 30); Zend_Session::rememberMe($seconds); //make the session persist for 30 days $saveHandler->setLifetime($seconds, true); Zend_Session::setSaveHandler($saveHandler); Zend_Session::start(); My cookie is being set: NamePHPSESSIDValuebad9b1550e76099db1ea44e609eee2faHostlocalhostPath/SecureNo ExpiresFri, 02 Nov 2007 15:14:31 GMT On 10/3/07, Jeremy Postlethwaite <[EMAIL PROTECTED]> wrote: > > I tried doing this without setting the save handler. The same problem > exists on the MAC with broswers: Firefox, Camino and Safari. > > So this "problem" may reside in Zend_Session. I will examine Zend_Session > and check for existing bugs. Thanks, Jordan for the ideas to test. > > FYI using MAMP for installation on this MAC. > PHP 5.2.1 > MySQL 5.0.37 - InnoDb > > CREATE TABLE `Sessions` ( > `id` varchar(32) NOT NULL, > `modified` int(11) default NULL, > `lifetime` int(11) default NULL, > `data` text, > PRIMARY KEY (`id`) > ) ENGINE=InnoDB DEFAULT CHARSET=latin1 > > > On 10/2/07, Jordan Raub < [EMAIL PROTECTED]> wrote: > > > > What did similar tests show when using the default save handler? What > > is the create table statement you used for your table and the corresponding > > configuration array sent to > > the Zend_Session_SaveHandler_DbTable constructor? Might this be a browser > > issue? The browser may drop the cookie for some strange reason. Are you > > using firefox? safari? I'm using a mac with firefox for my testing, but I > > also use safari for testing too. I'm also using ubuntu for my internal > > server testing. Anyone have similar troubles with IE? What version of PHP > > are you using and which type of RDBMS and version? > > > > I'm in the process of moving so I might not be able to get to this for a > > week-ish. (not even on my dev box right now) > > > > Side note: I did find a lot of unit tests I wrote but forgot to put them > > into the repository, when I get settled I'll post them. > > > > Thanks, > > Jordan > > > > He that teaches himself hath a fool for his master. -- Benjamin Franklin > > Poor is the pupil who does not surpass his master. -- Leonardo da Vinci. > > > > > > ----- Original Message ---- > > From: Jeremy Postlethwaite < [EMAIL PROTECTED]> > > To: Holografix <[EMAIL PROTECTED]> > > Cc: Jordan Raub < [EMAIL PROTECTED]>; ZendFramework General > > <[email protected] > > > > > Sent: Monday, October 1, 2007 12:21:23 AM > > Subject: Re: [fw-general] using Zend_Auth with a custom Session Save > > Handler ? > > > > Does any else have an issue with this session handler regenerating IDs > > and inserting them into new rows in the db as opposed to updating the > > respective row? > > > > This happens when I hold down <cmd>+r (<ctrl>+r for you windows users) > > for a rapid refresh. > > > > This is a simple test I run for performance and stress testing. I try to > > see how many page loads in a given period. Easier than putting in bench > > specific code. > > > > When I do the rapid refresh test the session handler does not give any > > errors, but creates a new session. This does not happen if I press <cmd>+r > > slowly. My page counter increments as it should. > > > > As a note when the session handler creates a new row, the last session > > is ignored and abandoned, no info is transferred from the `data` field. Here > > is a dump of my date: > > > > > > mysql> select * from Sessions; > > > > +----------------------------------+------------+----------+---------------------------------------+ > > | id | modified | lifetime | > > data | > > > > +----------------------------------+------------+----------+---------------------------------------+ > > | 127e86a27b6f5104c7c03dad9e379576 | 1191218802 | 2592000 | > > stats|a:1:{s:12:"pages_loaded";i:1;} | > > | 17695c011630fa1a1029b9814cb3cce3 | 1191218802 | 2592000 | > > stats|a:1:{s:12:"pages_loaded";i:1;} | > > | 2cc3f6306f78b002c3297d3045a9c760 | 1191218802 | 2592000 | > > stats|a:1:{s:12:"pages_loaded";i:1;} | > > | 37989584220d165d2ca615cd9912e9eb | 1191218801 | 2592000 | > > stats|a:1:{s:12:"pages_loaded";i:11;} | > > | 422d6a23c3308f2ab143c888388c94f0 | 1191218802 | 2592000 | > > stats|a:1:{s:12:"pages_loaded";i:1;} | > > | 47f279f9aa66e98448cdc76bad42e310 | 1191218802 | 2592000 | > > stats|a:1:{s:12:"pages_loaded";i:1;} | > > | 9e8e01ce6520eabe9b68179cc6b36dac | 1191218802 | 2592000 | > > stats|a:1:{s:12:"pages_loaded";i:1;} | > > | b3ce9e5b0b230630d631a6e039e3ce3d | 1191218801 | 2592000 | > > stats|a:1:{s:12:"pages_loaded";i:1;} | > > | ca0de03c5b09f17bfa371d5692efc840 | 1191218802 | 2592000 | > > stats|a:1:{s:12:"pages_loaded";i:1;} | > > | cdf01158504180e9509f1a9f3e475dee | 1191218802 | 2592000 | > > stats|a:1:{s:12:"pages_loaded";i:1;} | > > | d16a552ccc93671799e0c775e4775315 | 1191218809 | 2592000 | > > stats|a:1:{s:12:"pages_loaded";i:5;} | > > | e9391c2e2b65ad436602966ea11460b4 | 1191218802 | 2592000 | > > stats|a:1:{s:12:"pages_loaded";i:1;} | > > > > +----------------------------------+------------+----------+---------------------------------------+ > > 12 rows in set (0.00 sec) > > > > As you can see the 4th and 2nd to last row have pages_loaded > > incremented. The others were created by quickly holding <cmd>+r. > > > > I have not had a lot of time to debug this. I thought I was keeping it > > simple. > > > > If other people could try the refresh test to see if this happens on > > your box, please let me know, It may make trouble shooting easier. > > > > I am running on a Macbook Pro. I will not be able to test this on my > > FreeBSD Unix server until next week. > > > > Thanks, > > > > Jeremy > > > > > > On 9/24/07, Holografix < [EMAIL PROTECTED]> wrote: > > > +1 here. Hope to see this component in ZF Core soon. > > > Great work Jordan. Thank you very much. > > > > > > Cheers > > > holo > > > > > > > > > Jordan Raub escreveu: > > > > Sweet! I thought this went to the wayside. I've been using it too on > > my > > > > stuff with no problems. Do you think this could make it into the > > trunk > > > > soon? Here is the link to the proposal too > > > > http://framework.zend.com/wiki/display/ZFPROP/Zend_Session_SaveHandler_DbTable > > > > > > > > > > Thanks, > > > > Jordan > > > > > > > > He that teaches himself hath a fool for his master. -- Benjamin > > Franklin > > > > Poor is the pupil who does not surpass his master. -- Leonardo da > > Vinci. > > > > > > > > > > > > ----- Original Message ---- > > > > From: Simon Mundy < [EMAIL PROTECTED]> > > > > To: Truppe Steven < [EMAIL PROTECTED] > > > > > Cc: [email protected] > > > > Sent: Saturday, September 22, 2007 7:10:53 PM > > > > Subject: Re: [fw-general] using Zend_Auth with a custom Session Save > > > > > > Handler ? > > > > > > > > The Zend_Session_SaveHandler_DbTable component is tucked away in the > > > > incubator - I've had it running now for the last couple of weeks in > > > > combination with Zend_Auth and it's been working wonderfully. It's > > been > > > > used in conjunction with a series of linked microsites using > > different > > > > subdomains and this approach has been the most effective way for me > > to > > > > manage sessions smoothly across them all (especially if I decide to > > > > offload my database and sessions to a standalone server down the > > track). > > > > > > > > First you set up your session table. Here's my MySQL dump (nearly > > > > identical to the example shown on the proposal page > > > > for Zend_Session_SaveHandler_DbTable):- > > > > > > > > CREATE TABLE `session_list` ( > > > > `id` varchar(32) collate utf8_unicode_ci NOT NULL, > > > > `save_path` varchar(32) collate utf8_unicode_ci NOT NULL, > > > > `name` varchar(32) collate utf8_unicode_ci NOT NULL default '', > > > > `modified` int(11) default NULL, > > > > `lifetime` int(11) default NULL, > > > > `data` text collate utf8_unicode_ci, > > > > PRIMARY KEY (`id`,`save_path`,`name`) > > > > ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci > > PACK_KEYS=1; > > > > > > > > Here's an example of my config.ini file:- > > > > > > > > [all] > > > > > > > > ; > > > > > > ----------------------------------------------------------------------------- > > > > ; Database connection > > > > ; > > > > > > ----------------------------------------------------------------------------- > > > > > > db.connection = pdo_mysql > > > > db.host = localhost > > > > db.username = myusername > > > > db.password = mypassword > > > > db.dbname = mydatabase > > > > > > > > ; > > > > > > ----------------------------------------------------------------------------- > > > > > > ; Session > > > > ; > > > > > > ----------------------------------------------------------------------------- > > > > > > session.cookie_domain = mydomain.com.au > > > > session.name = mycustomsessionname > > > > session.remember_me_seconds = 864000 > > > > session.use_only_cookies = on > > > > > > > > sessionhandler.name = session_list > > > > sessionhandler.lifetime = 864000 > > > > sessionhandler.primary = id > > > > sessionhandler.dataColumn = data > > > > sessionhandler.modifiedColumn = modified > > > > sessionhandler.lifetimeColumn = lifetime > > > > sessionhandler.overrideLifetime = true > > > > > > > > This is how I set it up in my bootstrap:- > > > > > > > > // Set up database > > > > $db = Zend_Db::factory($config->db->connection, > > $config->db->toArray()); > > > > Zend_Db_Table::setDefaultAdapter($db); > > > > > > > > // Set session defaults > > > > Zend_Session::setOptions($config->session->toArray()); > > > > Zend_Session::setSaveHandler(new > > > > > > Zend_Session_SaveHandler_DbTable($config->sessionhandler->toArray())); > > > > > > > > And then continue to use Zend_Auth as you would normally. > > > > > > > > Note that the storage engine for Zend_Auth bears no relation to the > > > > session at all - this will be a completely separate table (if you're > > > > using database authentication). > > > > > > > > Hope this gets you on the way! > > > > > > > > Cheerio > > > > > > > >> Hi, > > > >> > > > >> i have a class that implements Zend_Session_SaveHandler_Interface > > to > > > >> save the session data inside a database. now i want this save > > handler to > > > >> be used to store the identity after authentication. > > > >> > > > >> in the manual i found this: > > > >> > > > >> /By default, Zend_Auth provides persistent storage of the > > identity > > > >> from a successful authentication attempt using the PHP session. > > Upon > > > >> a successful authentication attempt, Zend_Auth::authenticate() > > > >> stores the identity from the authentication result into > > persistent > > > >> storage. Unless configured otherwise, Zend_Auth uses a storage > > class > > > >> named Zend_Auth_Storage_Session, which, in turn, uses > > Zend_Session. > > > >> A custom class may instead be used by providing an object that > > > >> implements Zend_Auth_Storage_Interface to > > Zend_Auth::setStorage()./ > > > >> > > > >> What does that mean for the Zend_Session_SaveHandler implementation > > ? Is > > > >> Zend_Auth_Storage_Interface the same interface ?? > > > >> > > > >> > > > >> I only found Zend_Session::setSaveHandler() but i have no idea how > > to > > > >> use this in combination with Zend_Auth (because Zend_Auth handles > > > >> Zend_Session internal). > > > >> > > > >> I hope someone can help me with this. > > > >> > > > >> best regards, > > > >> Truppe Steven > > > > > > > > -- > > > > > > > > Simon Mundy | Director | PEPTOLAB > > > > > > > > """ " "" """""" "" "" """"""" " "" """"" " """"" " """""" "" " > > > > 202/258 Flinders Lane | Melbourne | Victoria | Australia | 3000 > > > > Voice +61 (0) 3 9654 4324 | Mobile 0438 046 061 | Fax +61 (0) 3 9654 > > 4124 > > > > http://www.peptolab.com > > > > > > > > > > > > > > > > > > >
