I should also mention this behavior happens if Apache::DBI (for persistance 
connections) is running or not.  

Bill

On Fri, 16 Mar 2001, goEbusiness.com Mail Lists wrote:

> I've got a weird problem that I haven't been able to fix...
> 
> This behaviour exhibits on the 2 boxes I have that have Apache 1.3.14, ModPerl 1.24 
>(compiled in).
> 
> One is Solaris 2.6, one is 7.
> 
> Both run Embperl 1.3.0 (upgraded to 1.3.1 also and that had no effect)
> 
> Here's the problem I am running into.
> 
> If I have more than one VirtualHost setup to use Embperl sessions, randomly the 
>session data for one site will be lost, and then a new cookie will be set (proper 
>name, etc) but to the OTHER VIRTUAL HOSTS's Session table!
> 
> Each session table is on a different database (one database per VirtualHost in these 
>examples)
> 
> I have enabled the DEBUG to look at the ENV, and for each request, the environment 
>is set properly (ie if I go to clients.domain.com I see the SESSION_ARGS I set for 
>that VirtualHost in the log, and also if I print it out from my Embperl processed 
>page)
> 
> I've tried putting the PerlSetEnv settings in just the <VirtualHost> tags, moved 
>Directory in/out of VirtualHost...same problem.
> 
> The first connection works fine, say if I got to clients.domain.com, I see the 
>correct session ID in their database.
> 
> If I go to other.domain.com, I see the correct session cookie in their 
>database/table.
> 
> But then, if I randomly use other browsers or machines, or the browsers I already 
>have open, the ID will change.
> 
> And if I look in the MySQL logs, it is apparently as to _why_ this is happening, the 
>connection ID making the updates that is being used to check for and set the session 
>ID, is the wrong one for the site.
> 
> For example, MySQL processes:
> 
> 
>+-----+------------+--------------+-------------+---------+------+-------+------------------+
> | Id  | User       | Host         | db          | Command | Time | State | Info      
>       |
> 
>+-----+------------+--------------+-------------+---------+------+-------+------------------+
> | 401 | username   | localhost    | database    | Sleep   | 1228 |       |           
>       | 
> | 402 | username2  | localhost    | database2   | Sleep   | 1205 |       |           
>       |
> 
> 401 should be used for "clients.domain.com".  402 should be used for 
>"other.domain.com"
> 
> Let's pretend I go to clients.domain.com, and then the cookie "changes".  If I look 
>in the MySQL log I see it attempting to check via the wrong connection (in this case 
>connection ID 402) instead of 401...and then of course it simply writes a new 
>cookie...but of course I've lost all my session data.
> 
> Using Semaphore and removing the LockDataSource segements of EMBPERL_SESSION_ARGS 
>didn't solve the problem.
> 
> It's like ModPerl, Embperl or Apache::Session is simply using the wrong connection, 
>despite me setting SESSION_ARGS specific to each VirtualHost/Directory. 
>  
> Any ideas?:)
> 
> httpd.conf:
> 
> <VirtualHost 192.168.1.11>
> DocumentRoot /disk1/www/Clients
> ServerName clients.domain.com
> <Directory "/disk1/www/Clients">
>         <Files *.epl>
>                 SetHandler  perl-script
>                 PerlHandler HTML::Embperl
>                 Options     +ExecCGI
>                 PerlSetEnv EMBPERL_OPTIONS 16
>                 PerlSetEnv EMBPERL_COOKIE_DOMAIN ".domain.com"
>                 PerlSetEnv EMBPERL_COOKIE_PATH "/"
>                 PerlSetEnv EMBPERL_SESSION_CLASSES "MySQL MySQL"
>                 PerlSetEnv EMBPERL_SESSION_ARGS "DataSource=dbi:mysql:database 
>UserName=username Password=password LockDataSource=dbi:mysql:database 
>LockUserName=username LockPassword=password"
>         </Files>
> </Directory>
> </VirtualHost>
> 
> <VirtualHost 192.168.1.11>
> DocumentRoot /disk1/www/Other
> ServerName other.domain2.com
> <Directory "/disk1/www/Other">
>         <Files *.html> 
>                 SetHandler  perl-script
>                 PerlHandler HTML::Embperl
>                 Options     +ExecCGI
>                 PerlSetEnv EMBPERL_OPTIONS 16
>                 PerlSetEnv EMBPERL_COOKIE_PATH "/"
>                 PerlSetEnv EMBPERL_COOKIE_DOMAIN ".domain2.com"
>                 PerlSetEnv EMBPERL_SESSION_CLASSES "MySQL MySQL"
>                 PerlSetEnv EMBPERL_SESSION_ARGS "DataSource=dbi:mysql:database2 
>UserName=username2 Password=password2 LockDataSource=dbi:mysql:database2 
>LockUserName=username2 LockPassword=password2"
>         </Files>
> </Directory>
> </VirtualHost>
> 
> 
> Thanks!
> 
> Bill
> 
> 
> 


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to