On Feb 12, 5:59 am, wirtsi <[EMAIL PROTECTED]> wrote:
> so I'll just go over to this thread with my problems :)
sorry for derailing your thread ;)
> ...
> function beforeSave()
> {
> $this->query("LOCK TABLE {$this->table} AS Framejob WRITE,
> {$this->table} WRITE,
> queues AS Queue WRITE,jobcolumns as Jobcolumn
> WRITE,storages as Storage WRITE,
> lenscolors as Lenscolor WRITE,framecolors as
> Framecolor WRITE,names as Name WRITE");
>
> }
> Any idea what to do?
I think you are describing a classic race condition.
http://en.wikipedia.org/wiki/Race_condition
A problem for sure, the list ordering may run perfectly for years and
then blow up one day while you are on vacation.
I don't think you will be able to fix it with LOCK TABLES in mySQL.
Hopefully you are using InnoDB anyway and it becomes irrelevant. LOCK
TABLES can't prevent Thread B from reading the table, which is what
you need to do.
In mySQL maybe you can try GET_LOCK()
http://dev.mysql.com/doc/refman/5.0/en/miscellaneous-functions.html#function_get-lock
So run "SELECT GET_LOCK('L1',10)" before you proceed. If Thread B
comes along and needs to wait until Thread A is finished doing it's
business, then it will (i think ---haven't tested)
how then to make it DB-agnostic is another issue. Anyone?
have fun
Sam
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Cake
PHP" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at
http://groups.google.com/group/cake-php?hl=en
-~----------~----~----~----~------~----~------~--~---