Обсуждение: server dropping connection

Поиск
Список
Период
Сортировка

server dropping connection

От
Reed Loefgren
Дата:
All,

I've been trying to run a nested query via a browser using a php script.
The script looks at a table with a couple years worth of data (6M rows).
If I constrain the search to five or six days of the data it works fine
and displays the result set in the browser, but if I have it parse the
entire table it errors out with this message:

server closed the connection unexpectedly This probably means the server
terminated abnormally before or while processing the request.

The error points at line 33, which is the $query = "SELECT..." in the
script.
The full table query runs fine in psql and the very limited query runs
fine in the php script so I'm thinking there might be some type of
resource starvation or client connection timeout happening. In psql the
full query over two years of data returns a result set (limit 50) in about
three minutes. Any ideas where I should begin looking?

thanks,

r



Re: server dropping connection

От
kmh496
Дата:
2006-05-02 (화), 18:13 -0600, Reed Loefgren 쓰시길:
> All,
>
> I've been trying to run a nested query via a browser using a php script.
> The script looks at a table with a couple years worth of data (6M rows).
> If I constrain the search to five or six days of the data it works fine
> and displays the result set in the browser, but if I have it parse the
> entire table it errors out with this message:
>
> server closed the connection unexpectedly This probably means the server
> terminated abnormally before or while processing the request.
>
> The error points at line 33, which is the $query = "SELECT..." in the
> script.
> The full table query runs fine in psql and the very limited query runs
> fine in the php script so I'm thinking there might be some type of
> resource starvation or client connection timeout happening. In psql the
> full query over two years of data returns a result set (limit 50) in about
> three minutes. Any ideas where I should begin looking?
>
> thanks,

http://httpd.apache.org/docs/1.3/mod/core.html#timeout

says


The TimeOut directive currently defines the amount of time Apache will
wait for three things:

     1. The total amount of time it takes to receive a GET request.
     2. The amount of time between receipt of TCP packets on a POST or
        PUT request.
     3. The amount of time between ACKs on transmissions of TCP packets
        in responses
     4.
>

i am interested in what the change would be if you wrote a server-side
function, however.

> r
>
>
>
> ---------------------------(end of broadcast)---------------------------
> TIP 5: don't forget to increase your free space map settings
>
>
>
--
my site <a href="http://www.myowndictionary.com">myowndictionary</a> was
made to help students of many languages learn them faster.






Re: server dropping connection

От
Volkan YAZICI
Дата:
On May 02 06:13, Reed Loefgren wrote:
> I've been trying to run a nested query via a browser using a php script.
> The script looks at a table with a couple years worth of data (6M rows).
> If I constrain the search to five or six days of the data it works fine
> and displays the result set in the browser, but if I have it parse the
> entire table it errors out with this message:
>
> server closed the connection unexpectedly This probably means the server
> terminated abnormally before or while processing the request.

Just making rhetoric: You removed script execution time limits via
set_time_limit(), right?

I'll suggest turning error_reporting() to E_ALL and using asynchronous
query execution functions, instead of synchron ones. For instance:

$query_cmd = "SELECT ...";
$res = pg_send_query($conn, $query_cmd);
if (!$res)
{
    /* Error handling stuff... */
}

while (pg_connection_busy($conn))
{
    /*
     * Sorry, no clue about connection socket in here.
     * We're waiting without select() or poll().
     * (I know, I know... PHP sucks.)
     */
     usleep(100000); /* 0.1 seconds. */
}

/* Seems like result is ready now. */

$res = pg_get_result($conn);
if (!$res)
{
    /* Error handling. */
}

IMHO, this method can output more verbose (and accurate?) query status
when compared to an odd pg_query() call.


Regards.