Interfaccia web PHP generica per gestire gli aggiornamenti simultanei in modo ottimistico

1

Sto cercando di scrivere un nuovo CMS basato su PHP che gestisca le modifiche simultanee in modo ottimistico come il controllo della versione sorgente piuttosto che il blocco pessimistico come Wordpress. Voglio essere in grado di scrivere alcune pagine PHP generiche per gestire qualsiasi conflitto in modo user friendly in modo che la risoluzione dei conflitti sia semplice, la cronologia è mantenuta e il ripristino è semplice.

Voglio usare un database e devo prima progettarlo. Le mie idee finora:

  • Avere una tabella cronologia che memorizza tutti gli aggiornamenti come in Wordpress con un numero di versione.

  • Quando un utente salva un record, controllerà se ci sono stati altri aggiornamenti da allora. Questo è abbastanza facile da fare se si salva un id della versione di checkout nella sessione quando l'utente inizia a modificare e si può finire con i 3 id per i salvataggi che si desidera unire.

Come faccio a mostrarlo all'utente in modo amichevole? Non riesco a trovare alcuna informazione sulle interfacce PHP per unire cose come questa. So che ci sono intere app come kmerge che fanno questo per solo file di testo e voglio sapere come farlo a livello di record di database.

Il mio progetto è finora solido? Di che altro ho bisogno?

    
posta Phil_1984_ 14.05.2015 - 00:27
fonte

1 risposta

2

Have a history table storing all updates like in Wordpress with a version number.

Sì, ma non memorizzare gli aggiornamenti, ma completare le revisioni (i contenuti di ogni modifica). Se hai bisogno di risparmiare spazio, comprimilo. Ma non importa troppo delle dimensioni. Raramente gli esseri umani sono in grado di produrre grandi volumi di dati da soli. Ci sono molte librerie che possono calcolare le differenze tra due versioni e puoi mostrarle all'utente in un modo molto amichevole.

When a user saves a record, it will check whether there have been other updates since. This is quite easy to do if you save a checkout version id in the session when the user starts to edit and you can end up with the 3 ids for the saves you want to merge.

Hai solo bisogno di differenziare le revisioni dei contenuti e le bozze del contenuto. Quando l'utente modifica un testo, l'unica cosa che viene salvata dovrebbe essere una bozza del suo lavoro. Non è necessario archiviare revisioni di bozze. Solo quando l'utente conferma di propagare le sue modifiche come definitive, viene creata una revisione.

    
risposta data 18.05.2015 - 18:20
fonte

Leggi altre domande sui tag