Re: Stop PHP execution on client connection closed

From: Date: Wed, 14 Sep 2011 15:35:06 +0000
Subject: Re: Stop PHP execution on client connection closed
References: 1 2 3 4  Groups: php.general 
Request: Send a blank email to php-general+get-314848@lists.php.net to get a copy of this message
On 9/14/2011 1:04 AM, Marco Lanzotti wrote: > Il 13/09/2011 20:58, Alex Nikitin ha scritto: >> Correction on Marco's post. You can absolutely stop a mysql query > > I know I can stop a query, but I don't know how to realize HTTP client > has closed connection during query execution. > > My query count how many records match selected fields in a 50M records > table. > Any query field is indexed and innodb uses 20GB of RAM to store data and > indexes, but some queries take about 30 seconds to run. > When user changes filters and asks for a new count, the old queries > continue to run using DB resurces unnecessarily. > > Bye, > Marco Well, from the sounds of that, you really do not have an easy option. Here is my suggestion. In your initial script, you could add a unique value to your SQL statement. You SQL would be something like... SELECT ... FROM ... WHERE ... AND (1=1 OR 'unique value'); add 'unique value' to your session data and then, when the person changes the selected fields and starts to execute another query, first, you could search to see if an SQL statement is running that has your unique value in it. if it cannot find a matching statement, simply execute the SQL query. If it does find an SQL statement that matches the unique value, kill it, then issue your SQL statement. Read the following to figure out how to find your unique process: http://dev.mysql.com/doc/refman/5.0/en/show-processlist.html Read the following to find out how to kill your processes: http://dev.mysql.com/doc/refman/5.0/en/kill.html But, it does seem like it would be possible.

« previous php.general (#314848) next »