ID:               40544
 User updated by:  kees at tweakers dot net
 Reported By:      kees at tweakers dot net
-Status:           Feedback
+Status:           Open
 Bug Type:         PostgreSQL related
 Operating System: Linux (Debian)
 PHP Version:      5.2.1
 New Comment:

Using the latest snapshots results in the same behaviour; the script
hangs and the connection stays open.


Previous Comments:
------------------------------------------------------------------------

[2008-10-30 17:02:18] [EMAIL PROTECTED]

Please try using this CVS snapshot:

  http://snaps.php.net/php5.2-latest.tar.gz
 
For Windows:

  http://windows.php.net/snapshots/



------------------------------------------------------------------------

[2007-04-05 07:48:28] [EMAIL PROTECTED]

>'Rollback on shutdown' is like 'Don't flush buffer before closing
file'.
I disagree, you need to commit everything explicitly.
If you didn't commit the transaction, it should be rolled back.


------------------------------------------------------------------------

[2007-04-05 01:28:11] yohgaki at ohgaki dot net

> And that's something I would call expected, because "rollback on
> shutdown" is much safer than "commit on shutdown".

As I wrote, under normal condition, current code(commit on shutdown)
does make more sense than rollback on shutdown because PostgreSQL
supports async query.

'Rollback on shutdown' is like 'Don't flush buffer before closing
file'. It does not acceptable for most people. (And more efficient if it
finish pending query at shutdown, too. If you are curious, take some
simple benchmarks)

However, under shared environment, it is not acceptable to consume all
connection by COPY FROM SDTIN. It is better to have a way to avoid such
action.

There are 2 options:

1) Leave it alone (and make DoS possible under shared environment)

2) Give administrators a option that cancel current and pending async
query.

I prefer first option. I'll ask PostgreSQL developer if it's possible
to have GRANT option for COPY in the future.

------------------------------------------------------------------------

[2007-03-09 10:11:12] [EMAIL PROTECTED]

>By calling PQcanel() before clean up resource, all async query which
>is not finished yet will be discarded instead of finishing its query.


And that's something I would call expected, because "rollback on
shutdown" is much safer than "commit on shutdown".

>I'll add new ini option that enables PQcancel() in
>list_entry_destructor. Any comments?

More INI options? No, thanks.

------------------------------------------------------------------------

[2007-03-08 04:24:24] yohgaki at ohgaki dot net

I didn't look the backtrace carefully. It stops when PQclear() is
called on the backtrace, while my PHP 5.2 stopeed at PQgetReuslt().
(Both of them are called when request is shutting down)

For at least PHP 5.2, it would be solved by calling PQcanel() when
cleaning up resource, but with compatibility issue. By calling PQcanel()
before clean up resource, all async query which is not finished yet will
be discarded instead of finishing its query. 

I'll add new ini option that enables PQcancel() in
list_entry_destructor. Any comments?

------------------------------------------------------------------------

The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at
    http://bugs.php.net/40544

-- 
Edit this bug report at http://bugs.php.net/?id=40544&edit=1

Reply via email to