Was ist "threading" in php?
Baba
- php
Bei der Suche auf die Frage, ob ich meine SQlite3-Datenbank sicher programmiere, ist mir aufgefallen, dass ich nur ungefähr weiß, was threads sind.
Ich dachte immer, jeder User, der auf die Website kommt, stellt ein thread dar. In diesem Blog steht aber z.b "Since threading it’s not available in PHP". Jetzt bin ich mir da nicht mehr so sicher.
Eigentlich ging es mir um meine Sqlite-Datenbank und was passiert, wenn zwei User (oder auch einer, z.B. wenn mehrere Tabs geöffnet und langanhaltende Prozesse parallel ausgeführt werden) gleichzeitig in die DB schreiben wollen.
Auf sqlite.org steht:
"Threads are evil. Avoid them.
SQLite is threadsafe. We make this concession since many users choose to ignore the advice given in the previous paragraph."
Nagut, nachgeschlagen in dem verlinkten 19-seitigen Paper. Dort finde ich "Threads are sequential processes that share memory.".
Ich weiß nun nicht, ob ich "threadsafe" überhaupt richtig definiere. Ich möchte auf eine Datenbank (in Sqlite ja in einer Datei) mit mehreren Usern gleichzeitig zugreifen.
Cheers,
Baba
Hallo,
Threads sind (leichtgewichtige) Prozesse die (meist) vom Betriebssystem bereitgestellt werden. Sie können parallel laufen (entweder gleichzeitig auf verschiedenen Prozessoren/Cores oder mit Hilfe von contextswiches, etc. auf einem Core). Das Problem dabei ist dass dadurch dass sie gleichzeitig laufen, können sie auch gleichzeitig auf den gleichen Speicher zugreifen und ihn auch verändern und dadurch unerwünschte Effekte hervorrufen.
Jeena
Tach!
Bei der Suche auf die Frage, ob ich meine SQlite3-Datenbank sicher programmiere, ist mir aufgefallen, dass ich nur ungefähr weiß, was threads sind.
Ich dachte immer, jeder User, der auf die Website kommt, stellt ein thread dar. In diesem Blog steht aber z.b "Since threading it’s not available in PHP". Jetzt bin ich mir da nicht mehr so sicher.
Als PHP-Anwender kommst du mit Thread nicht in Berührung. Es spielt dabei keine Rolle, ob im Hintergrund Thread verwendet werden oder nicht, du kannst es nicht beeinflussen.
Eigentlich ging es mir um meine Sqlite-Datenbank und was passiert, wenn zwei User (oder auch einer, z.B. wenn mehrere Tabs geöffnet und langanhaltende Prozesse parallel ausgeführt werden) gleichzeitig in die DB schreiben wollen.
Auf sqlite.org steht:
Die Frage ist, wie SQLite mit konkurrierenden Zugriffen umgeht. Und die Antwort steht eine FAQ darüber.
dedlfix.
Als PHP-Anwender kommst du mit Thread nicht in Berührung. Es spielt dabei keine Rolle, ob im Hintergrund Thread verwendet werden oder nicht, du kannst es nicht beeinflussen.
Vielen Dank, das ist eine hilfreiche Antwort :)
Die Frage ist, wie SQLite mit konkurrierenden Zugriffen umgeht. Und die Antwort steht eine FAQ darüber.
Ich las nun "Can multiple applications or multiple instances of the same application access a single database file at the same time?". Ich bin noch nicht ganz schlau. a) weiß ich nicht, ob das file-locking bei mir funktioniert? Und b), wenn die Datei gelockt ist, wartet dann der nächste Prozess (was ich mir wünschen würde) oder führt der SQLITE_BUSY return zum fehlerhaften Abbruch (was ich vermute).
Ich schreibe in die DB nur kleine Flags, die Zustände von großen Prozessen anzeigen, keine großen Datenmengen.
Cheers,
Baba
Tach!
Ich las nun "Can multiple applications or multiple instances of the same application access a single database file at the same time?". Ich bin noch nicht ganz schlau. a) weiß ich nicht, ob das file-locking bei mir funktioniert?
Das weiß ich auch nicht, aber es sind ja einige Konstellationen aufgeführt, die problematisch sind. Linux nur wenn du NFS (ein Netzwerkfilesystem) verwendest.
Und b), wenn die Datei gelockt ist, wartet dann der nächste Prozess (was ich mir wünschen würde) oder führt der SQLITE_BUSY return zum fehlerhaften Abbruch (was ich vermute).
Laut Handbuch müsstest du einen Timeout mit PHP einstellen können (busyTimeout).
dedlfix.
Laut Handbuch müsstest du einen Timeout mit PHP einstellen können (busyTimeout).
Supi. Dafür ist der da 8)
Ansonsten läuft das auf einem Windows 2008 Server. Ich hoffe dann gibts keine weiteren Probleme!
Grüße
Baba