Fråga : Besvära med valda meddelanden för kickvolym

Jag har skriftligt en beställnings- php-periodsförlagehanterare som använder standardperiodsIDet men diversehandel informationen om perioden i en MySQL databas. Platsspringet chefen behandlar ungefärligt besökare 30k om dagen, varje av som frambringar period ungefärligt 5 skriver, och referenser i mycket forföljden AJAX ber tack vare. Samma utfärdar har uppstått using serveren för ms SQL som en lagringsplattform. Problemet uppstår på period skriver. Skriva fungerar första försök att lokalisera ett existerande tillträde i perioden bordlägger med periodsIDet (som används som det primärt, stämma), och därefter endera mellanlägg eller uppdateringar rekordet därmed. Tillfälligt (1%-5% av perioden skriver), den initiala referensen kommer tillbaka tömmer, även om perioden inte är ny, och det finns en ro i databasen som fästas till periodsIDet försöken för logik därefter att sätta in ett nytt rekord, only för att köra afoul av primärt nyckel- unikhettvång. Detta orsakar oacceptabelt fel. Felet behandlas förhållandevis behagfullt, men ger en markant degraderad användare erfar. Efter många försök att lösa utfärda, mig har varit mislyckade. Bordlägga använder InnoDB som en motor och en utf8_general_ci som ett tecken - uppsättning. Rengöringsduken app är rinnande på den Zend ramen och att använda ram DB-funktionsdugligheten. Problemstillbilden uppstår, när reglar mysqlianslutningar används i stället. Någon inblick skulle uppskattas väldeliga. Psuedo kodifierar för perioden skriver är förutsatt att nedanfört. class= " lineNumbers " >
1 för >query (sql); // kommer tillfälligt tillbaka med 
                           // ogiltig resultatuppsättning även om
                           det // periodsrekordet finns
    om (räkning (ror), > 0)
        updateRecord (ID, sessionData);
    annars
        // därefter försök att sätta in dubblett ror
        insertNewRecord (ID, sessionData);
    retur;
<-/pre>
function " för prettyprint " för class= för id= " codeSnippet766935 " för >
" klar "

Svar : Besvära med valda meddelanden för kickvolym

1 - När den behandlar sig yourself uppdateringen med SQL-queries, testar få effekt av
SÄTT IN *** PÅ NYCKEL- UPPDATERING*** FÖR DUBBLETT,

cf http://dev.mysql.com/doc/refman/5.0/fr/insert.html

2 - Sedan du behandlar i parallellen $_SESSION, och sql kopierar av periodsdata, du styrkan betraktar att lagra sql-IDet in i $_SESSION-datan
När du gör första skriver mellanlägget?
I vissa fall $_SESSION uppdateras, efter endast sidan lämnas…,

3 - Den verkar dig leker egentligen i ett farligt område var precisera tajming inte garanteras egentligen och var du bör därför förvänta raddor besvärar.
Jag skulle försök att ompröva och uppdatera periodsdata endast på några viktiga händelser, så att någon cached SQL-query har haft någon tid att utföra. Ditt system som därefter skulle, är mer robustt, och ladda på serveren som också skulle, tappar markant.
Eller ha innehav för någon $_SESSION tidsstämpeln av den sist uppdateringen och att uppdatera, efter endast 2 understöder
Inte mycket men hey, detta beror på din SQL-server och spänningen dig som är pålagd det, Sure Ajax-gilla. Mikrosekunder eller även milli- eller centi-understöder uppdateringar är fina för Ajax, men inte för SQL-server
Andra lösningar  
 
programming4us programming4us