Re: Sybase Peristent Connections Gotchas

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

 



The biggest problem I've had with persistent connections is the problems that arise when the connection goes down. You have to monitor the connection status anyways (and reconnect on a failure), so it was usually easier to just connect every time. I don't know if this is specific to sybase. You also avoid headache dealing with multiple connections per process. Over a local ethernet this was usually such a short delay that it didn't matter. Typically I don't care much for speed, you avoid a lot of headache avoiding the persistent connections, but the tradeoff is speed of course.

It seems to make a lot more sense to me to just reset the handle to drop all temp tables and that.

As for the transactions, I think as long as you "do" the transaction all at once there would be no problem right? If it was a problem in the middle of a socket write, chances are the socket closed also, right?

-Jeff

Brian Foddy wrote:

I've been using PHP4/5 and Sybase for several years, using standard
sybase_connect. Today I tried playing around with pconnect to get aquainted.


I expected one simple condition of a "use database" from one web page
affecting another, and easilly handled that with a connection wrapper that
re-uses the proper database with each reconnection.


A couple other more troublesome issues also quickly came up.
1. Any #temp database tables are not destroyed between calls. I can probably
work around this with some minor coding changes to manually drop temp tables.


2. Any call to environmental "set" commands like "set isolation" remain in effect
after the web page is complete. Again with some work I could probably recode some
pages to not change these values, or reset them when complete.


3. The potentially most bothersome would be a page failing to call
commit tran/rollback tran, especially during some error condition. Its easy to think
any uncommited tran is rolled back when the page exists. But persistent connections
won't do this. This could be a disaster by leaving open a transaction causing all
subsequent calls to never be commited... I might be able to create some wrapper
that always resets the transaction state before starting??


I'm curious how others have attempted to solve these problems, and others
I haven't thought of yet. Clearly many can be avoided by having clean code,
but just 1 exception...


Brian


-- 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