You are here: Re: parallel interpreter/db problem. transaction didn't fix. « PHP Programming Language « IT news, forums, messages
Re: parallel interpreter/db problem. transaction didn't fix.

Posted by Gordon Burditt on 04/23/06 09:36

>mysql_query("START TRANSACTION", $link2);
>$q2=mysql_query("SELECT pictures.pid AS pid
> FROM pictures,counter
> WHERE pictures.pid>counter.pid
> LIMIT 1", $link2);
>if ($row2=mysql_fetch_assoc($q2)) {
> mysql_query("UPDATE counter SET pid=$row2[pid]", $link2);
> $n=$row2['pid'];
>} else { //reached end of table.
> mysql_query("UPDATE counter SET pid=1", $link2);
> $n=1;
>}
>mysql_free_result($q2);
>mysql_query("COMMIT", $link2);

Check to see whether your queries WORK. If they do not work,
print out the query and the value of mysql_error(). (For actual
production code, log it somewhere the user won't see it).

>the transaction makes no difference in the outcome.

The transaction may be counterproductive. For certain applications,
having uncommitted changes be NOT visible to other connections until
they are committed can bite you big time. One example of this is
the "last modified" timestamp being used to identify recently changed
stuff, to actually make the changes in the real world (e.g. create
mailboxes). When it can take a long time to commit a transaction,
the "last modified" date can go from months old to hours old without
ever having been only a few minutes old, fooling provisioning software
trying to see all the changes and not miss any.

>I've even tried locking the tables, but that only results in invalid
>resource errors.

Then find out why your query didn't work, and fix it (print
mysql_error() for the failing query). You need to lock ALL the
tables you're going to use, and if you use aliases, you may have
to lock them under the name of the alias.

>when this picture code is called twice in sequence, (2 separate
>interpreters, possibly by separate processors), I get the same image. I
>shouldn't be getting the same image twice. this is one of those
>hair-pulling sessions.
>
>Everything I've tried results either in no pictures at all (picture
>placeholders)

Please explain how that can happen in terms of the generated HTML.
Are you generating numbers for which there is no image file?

>with both the same sizes due to errors, or with the same
>pictures on the same page.
>
>transactions, no transactions, using a counter is out of the question.
>I don't understand what's even happening here. the transaction *should* fix
>this! Am I missing something

Gordon L. Burditt

 

Navigation:

[Reply to this message]


Удаленная работа для программистов  •  Как заработать на Google AdSense  •  England, UK  •  статьи на английском  •  PHP MySQL CMS Apache Oscommerce  •  Online Business Knowledge Base  •  DVD MP3 AVI MP4 players codecs conversion help
Home  •  Search  •  Site Map  •  Set as Homepage  •  Add to Favourites

Copyright © 2005-2006 Powered by Custom PHP Programming

Сайт изготовлен в Студии Валентина Петручека
изготовление и поддержка веб-сайтов, разработка программного обеспечения, поисковая оптимизация