Performance impact of not closing propel connection
Asked Answered
K

1

0

I'm using symfony 1.4/propel 1.4 for a project, which was made by other developer earlier. On that project, propel connection is taken by using following code

$con = Propel::getConnection(UsersPeer::DATABASE_NAME, Propel::CONNECTION_WRITE);

However it never closes the connection using

Propel::close();

I just searched that there are 1500+ such incidents of opening connection & I guess none of them is closing connection.

I know its always good practice to close connection but in present case, it seems I wont be able to fix them all as fixing all the incidents is definitely going to take lot of time, may be a whole day. So now I'm confused if I should fix that or not. If I let it be like that, will it have any performance impact?

EDIT: Just for reference

Part 2 of this question Use of closing database connection in php

Kensell answered 11/9, 2012 at 8:12 Comment(2)
Do they connect to Propel each time ?! Theorically it's done by Symfony and you don't have to manage the opening/closing. By the way, I guess PHP close the connection at the end of each script if you don't tell it to explicit do it. This usually perform on the __destruct object. See this question/answers.Nonnah
Not always but mostly in case of transaction operation. However I found few places where it is happening for simple query too.Kensell
S
1

If anything, explicitly closing connections may harm performance. PDO often caches connections from one request to the next, on the reasonable assumption that the next request will use the same credentials.

Edit: reading the docs, it looks to me like PDO::ATTR_PERSISTENT connections are cached regardless of any attempt to close them, so you might as well not bother.

Serum answered 11/9, 2012 at 8:33 Comment(2)
By first para, does it mean "one should not close the connection" explicitly? If yes, what is the recommended use of Propel::close()Kensell
IMHO, I don't think you ever really need to call close(). And I wouldn't worry about calling getConnection() over and over again - Propel has it's own connection caching, so you're just getting the same connection back each time.Serum

© 2022 - 2024 — McMap. All rights reserved.