Grazie, per le risposte (pensavo che il 3d fosse caduto nel dimenticatoio )

Controllando meglio, credo di avere qualche dubbio con le transazioni (InnoDB). Ho fatto un semplice script di test per vedere se le transazioni blocchino la tabella in lettura:

test.php
Codice PHP:
<?php
$db 
mysql_connect('localhost''root''');
mysql_select_db('test');
mysql_query("START TRANSITION");
$res mysql_query("SELECT * FROM test WHERE id=1");
$data mysql_fetch_assoc($res);
echo 
$data['num'];
if(!isset(
$_GET['w']))
    
sleep(8);
mysql_query("UPDATE test SET test.num=9 WHERE id=1");
mysql_query("COMMIT");
?>
Inizialmente test.num = 8. dal browser ho lanciato test.php (pag1) e subito dopo test.php?w=1 (pag2)
Quello che mi aspettavo e che pag2 attendesse la fine di pag1 e stampasse 9.
Invece sia pag1 che pag2(che non attende) stampano 8....quindi le transazione non credo vadano bene, perchè io devo rendere atomiche la lettura e la scrittura

Quindi credo che resti il lock. SELECT ... FOR UPDATE lo vorrei evitare perchè uso un framework (cakePHP) e non so se riesco ad usarla (vorrei usare i metodi del modello e non dover fare le query 'a mano')

Cmq: secondo voi è giusto l'approccio di scalare le quantità dal db dopo il check-out, oppure considerare come acquistate anche quelle solo nel carrello ? (so che è quasi una domanda esistenziale , ma secondo voi cosa è meglio )