Hi!
Also, ist es denn nicht egal ob der Apache (oder welcher Server auch immer) threaded läuft? Es ist eher die Frage ob PHP threaded lauft, bzw. ob der PHP-Interpreter des Servers eine Seite nach der anderen abarbeitet oder ob er für zwei Seiten zwei Threads erstellt und diese vielleich auf zwei Prozessor(kernen) parallel verarbeitet.
Die Requests kommen beim Webserver rein. Nur der entscheidet, wann etwas an PHP weitergereicht wird. Und selbst wenn PHP als Modul in diesem läuft, ist es doch so geschrieben, dass Requests untereinander abgegrenzt laufen. Es ist auch nicht weiter interessant, auf welche Weise der Prozessor das Multitasking organisiert. PHP ist für Multitasking-Umgebungen designt, eine "Highländer"-Einstellmöglichkeit ist mir nicht bekannt. Bastel-Krücken mit File-Locks oder ähnlichem will ich lieber nicht erwähnen. Dein Problem beschränkt sich vom Prinzip her nicht auf PHP allein, auch wenn du nur damit auf das DBMS zuzugreifen planst. Konsequenterweise muss das DBMS-Handling transaktionsgesichert sein, wenn du dort keine inkonsitanten Daten haben willst, egal über welchen Weg man darauf zugreift.
Wieso wollt ihr mir von Locks abraten und empfehlt stattdessen Transaktionen? Was ist der Vorteil von Transaktionen? Ich habe noch nie mit Transaktionen gearbeitet, [...]
Hast du die bereits vorhandene Literatur im Allgemeinen und MySQL im Speziellen dazu angeschaut?
darum stellt sich mir die Frage, ob sich denn alle select-Aufrufe einer Transaktionen garantiert auf den exakt gleichen Datenstand beziehen.
Kommt (beim MySQL) auf das Isolation Level an (SET TRANSACTION ISOLATION LEVEL ...).
Lo!