• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Datenbank - Gleichzeitigen Zugriff verhindern?

MaxG

Neues Mitglied
Guten Abend zusammen.
Ich habe bereits eine ähnliche Frage schon einmal gestellt, muss allerdings noch ein bisschen in die tiefe gehen um weiter zu kommen. Ich habe eine Datenbank in Form einer XML Datei. das soll und muss auch so bleiben!!
Diese liegt mit meiner PHP Datei auf einem FTP Server. Der Code für die PHP Datei lautet:

PHP:
<?php
$xml = simplexml_load_file("datenbank.xml"); //This line will load the XML file. 
$sxe = new SimpleXMLElement($xml->asXML()); //In this line it create a SimpleXMLElement object with the source of the XML file. 

$person = $sxe->addChild($_POST["id"]); $person->addAttribute('Benutzername', $_POST["name"]);$person->addAttribute('Registrierung', date("d.m.Y"));$person->addAttribute('Source', 'user');

$person->addChild("Name", $_POST["name"]); $person->addChild("SpecialPicture", "False");  $person->addChild("OS", $_POST["os"]); $person->addChild("Aufrufe", $_POST["aufrufe"]); $person->addChild("Autostart", $_POST["autostart"]); $person->addChild("Programmversion", $_POST["programmversion"]);$person->addChild("Downloads", $_POST["downloads"]);  $person->addChild("LetzteNutzung", $_POST["letzteraufruf"]); $person->addChild("Berechtigung", "True"); $person->addChild("Meldung", "Dir wurde das Nutzungsrecht für das Programm entzogen."); 

$sxe->asXML("datenbank.xml");  //Überschreibt die alte Datenbank mit den Aktualisierungen
echo "Erfolgreich eingetragen"?>

Denke mal was der Code bewirkt ist klar. Es wird in der XML Datenbank ein neuer Eintrag mit verschiedenen Infos angegeben welche mit der POST Methode definiert werden. Jetzt habe ich folgendes Problem. Ich entwickle eigentlich Software für Windows. PHP ist nicht mein Spezialgebiet. Aus meinem Programm wird der PHP POST gestartet und eine erfolgreiche Antwort erfordert. Der POST MUSS also durchgeführt werden und MUSS erfolgreich sein.
Leider wird dieselbe XML Datei auch noch von allen Usern gelesen. Da meine Userrate wächst ist es immer wahrscheinlicher das mal zwei User gleichzeitig einen PHP POST auslösen. Jetzt würde das ja schlecht funktionieren. Entweder es kommt zum Fehler oder der Eintrag des einen wird durch den des anderen überschrieben.

Wie kann ich also mittels PHP realisieren das so eine Überladung nicht möglich ist. Als Beispiel. Jedes Internet Forum muss ja in der Lage sein mehrere POST GLEICHZEITIG zu bedienen und in die Datenbank zu übertragen? Wie schaffe ich das bei meiner XML Datenbank?
 
flock() soll funktionieren, aber es wird wahrscheinlich gross Block verursachen. Vielleicht Sie können die xml Datei ins mehrere Dateien teilen, um die Wahrscheinlichkeit von Block zu reduzieren. (z.B. eine Datei per User, dann habt man keinen Block mehr).
 
Zuletzt bearbeitet:
Dein Rem sagt //Überschreibt die alte Datenbank mit den Aktualisierungen
Wieso hängst du neue Einträge nicht an die Datenbank an. Zusätztlich zum flock sollte das performanter sein und helfen Fehler zu verhindern.
 
Zurück
Oben