Re: mysql_query blocking
| From: | Phpster | Date: | Sun, 28 Jun 2009 04:11:08 +0000 |
| Subject: | Re: mysql_query blocking | ||
| References: | 1 2 3 4 5 6 7 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-294690@lists.php.net to get a copy of this message | ||
On Jun 27, 2009, at 7:17 PM, Daniel Kolbo <kolb0057@umn.edu> wrote:
Phpster wrote:So it's a concurrency question. There are a couple of schools of thought here: Flag the record on select before the update to 'lock' it to a specific user. Any other user would get a readonly version of the data ( perhaps with a notice indicating another user has the lock ) Another common option is to accept both changes into a queue and then deciding who's data shall be the final version. This would add a ton of complexity fir very little gain. IMHO the first option is better as you could build functionality to track the record request and notify the second user when that data has been committed and the 'lock' flag turned 'off'. BastienBastien Sent from my iPod On Jun 27, 2009, at 4:13 PM, Daniel Kolbo <kolb0057@umn.edu> wrote:Yes. The question is not about MySQL efficiency - i'll leave that to the MySQL email group. This question is about putting in place PHP safe guards. Thanks, dKAshley Sheridan wrote:Further thought, do you have indexes on the table? BastienOn Sat, 2009-06-27 at 16:03 -0400, Daniel Kolbo wrote:I issue a 'lock tables tablename write' and do some work. This is to be expected. I want a way that to stop mysql_query() from just waiting for the mysql server. ` --PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.phpAshley Sheridan wrote:I've not seen this done before, but it should only be row locking if you're using InnoDB. What queries are you running that are affecting a script that badly? Thanks Ash www.ashleysheridan.co.ukOn Sat, 2009-06-27 at 15:15 -0400, Daniel Kolbo wrote:I'm using InnoDB. But either way how do you place a time limit on mysql_query()? Thanks, dKHello, When a MySQL table is locked a php call of mysql_query() that requires that table will hang as the request blocks at the MySQL server until the table is unlocked. Is there a way to stop a mysql_query from hanging (by setting a time limit)? The php.ini directive max_execution_time does not help b/c: "Note: The set_time_limit() function and the configuration directive max_execution_time only affect the execution time of the script itself. Any time spent on activity that happens outside the execution of the script such as system calls using system(), stream operations, database queries, etc. is not included when determining the maximum time that the script has been running." The my.ini directive table_lock_wait_timeout does not work either b/c from MySQL: "This variable currently is unused. " (I am using mysql v5.1) I do not want to bluntly stop this from the apache level. How does one place a time limit on the execution of mysql_query()? Thanks for your help, dKIt depends on what type of table you have, MyISAM blocks at table level for instance, while InnoDB locks at row level. Thanks Ash www.ashleysheridan.co.uk