Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.

Παιδιά σε περίπτωση χρήσης της simplexml αν επεξεργάζονται το xml αρχείο παραπάνω από ένα άτομα, τι επιπτώσεις υπάρχουν στην αποθήκευση; Οι αλλαγές αυτού που το αποθηκεύσει τελευταίος επικαλύπτουν τα προηγούμενα; Ή κρατιούνται και οι αλλαγές του πρώτου χρήστη;

 

Σε περίπτωση αποθήκευσης ταυτόχρονα (εντάξει πολύ σπάνιο) τι γίνεται;

Δημοσ.

Τι σημασία έχει αν χρησιμοποιείς simplexml ή ταχυδρομικά περιστέρια; Κάπου σε ένα filesystem υπάρχει ένα αρχείο, και κάποιος κάποια στιγμή κάνει κλήσεις στο λειτουργικό για να γράψει τα περιεχόμενά του.

 

Αυτό που θα συμβεί είναι ότι ο τελευταίος κερδίζει. "Ταυτόχρονα" δεν υπάρχει σ' αυτή την περίπτωση, ο ένας από τους δυο θα φτάσει πρώτος και ο άλλος θα πάρει error.

  • Like 1
Δημοσ.

Δεν με ενοχλεί το error. 

 

Απλά θέλω να αποθηκεύονται τα πάντα και να μην χάνετε τίποτα (ή ότι σβήνεται νωρίτερα μην επανέρχεται αργότερα σε περίπτωση που κάποιος άλλος το είχε φορτωμένο στη μνήμη για επεξεργασία).

 

Όλα αυτά τα ρωτάω γιατί τρέχω μια πλατφόρμα με κάτι ψηφοφορίες σε php και αποθηκεύω τα δεδομένα σε xml (σε κλειστό κύκλο ανθρώπων).

Δημοσ.

Αυτό που είστε τόσο έξυπνοι μερικοί...

Λες να μην έψαξα στο google;

 

Δεν είμαι μια μέρα στο φόρουμ! 

 

Απλά μάλλον κάτι έγραφα λάθος ή δεν υπάρχει κάτι σχετικό (που μου φαίνεται περίεργο να μην υπάρχει).

Δημοσ.

Μια παρατήρηση ως άσχετος με php αλλά γνώστης java, θα σε βόλευε κάποιου τύπου synchronization για όταν γράφεται το αρχείο? Βρήκα μια μέθοδο flock() με μια γρήγορη αναζήτηση. Δεν ξέρω αν είναι αυτό που θέλεις απλά είπα μήπως βοηθήσω κάπου

Δημοσ.

Γνωρίζω την flock απλά η flock λειτουργεί κάπως διαφορετικά. 

 

Πρέπει να ανοιχτεί το αρχείο ως "file" και όχι συγκεκριμένα ως xml.

 

Επίσης, σε κάποιες περιπτώσεις φορτώνω όλο το αρχείο στην php και κάνω αλλαγές μέσω αυτής (που σημαίνει ότι έχει αποδεσμευτεί το αρχείο) και μετά ξαναφορτώνονται όλα αυτά στο αρχείο (π.χ. αλλάζω την αλφαβητική σειρά... σε αυτή την περίπτωση αν κάποιος προσθέσει κάτι μέχρι να γίνει το εν λόγω edit τότε αυτό θα εξαφανιστεί με το που στείλει ο πρώτος τα sorted childs... :P).

Δημοσ.

Δεν εχω πραγματικα ιδεα απο xml, αλλα θεωρητικα, δε θα πρεπει οταν ενας χρηστεις ανοιγει το αρχειο για επεξεργασια, να γινετε ελεγχος αν το αρχειο ειναι ανοιχτο απο καποιον αλλον χρηστη εκεινη τη στιγμη; Και ισως να τον αποτρεψει απο το να ανοιξει.

Δημοσ.

Απλά θέλω να αποθηκεύονται τα πάντα και να μην χάνετε τίποτα (ή ότι σβήνεται νωρίτερα μην επανέρχεται αργότερα σε περίπτωση που κάποιος άλλος το είχε φορτωμένο στη μνήμη για επεξεργασία).

Έχεις χρησιμοποιήσει ποτέ κάποιο σύστημα source control?

 

Αυτό που λες, στη γενική του περίπτωση και χωρίς να μπουν τεχνητοί περιορισμοί στη χρήση (πχ "δε μπορείς να ανοίξεις αυτό το αρχείο, το έχει άλλος ανοιχτό") απλά δεν γίνεται αυτόματα. Οπότε πρέπει να ξεκαθαρίσεις τι περιορισμοί είναι αποδεκτοί.

Δημοσ.

Να πω την αλήθεια ο όρος που χρησιμοποίησες παραπάνω δεν μου λέει κάτι (source control).

 

Ίσως θεωρείται κάτι τέτοιο το LOCK_EX στο file_put_contents.

Δημοσ.

Στο filesystem τα αρχεια ειναι streams. Δεν υπαρχει "επεξεργασια". Εαν εχεις ενα αρχειο 1gb και θες να αλλαξεις ενα μπιτ, τοτε θα ανεβασεις το αεχειο στη ραμ, θα αλλαξεις το μπιτ, θα διαγραψεις το παλιο αρχειο και τελος θα θα φτιαξεις νεο αρχειο με τα δεδομενα που εχεις στη ραμ.

 

Δηλαδη ουσιαστικα αυτο που λες για πολλαπλη επεξεργασια, δεν υπαρχει. Δες καλυτερα αυτο που λεει ο def για source control

Επισκέπτης
Δημοσ.

Όλα αυτά τα ρωτάω γιατί τρέχω μια πλατφόρμα με κάτι ψηφοφορίες σε php και αποθηκεύω τα δεδομένα σε xml (σε κλειστό κύκλο ανθρώπων).

 

Ε εδώ είναι το πρόβλημα σου. Σώστα σε μια βάση να μην έχεις concurrency προβλήματα. Σχεδιαστικά είναι λάθος αυτό που κάνεις.

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...