Cancellazione PG in Gdrcd 5.x
Cancellazione PG in Gdrcd 5.x postato il 13/09/2019 18:41:47 nel forum programmazione, open source e hosting
Ho fatto una ricerca ma non ho trovato nulla a riguardo, quando si cancella un pg, non si cancellano i relativi dati (messaggi, back messaggi, log, chat, araldo letto, abilità, personaggio oggetto, ruolo, messaggi araldo, e dalla tabella personaggio), qualche soluzione a riguardo?
13/09/2019 19:19:55
Ma lato gestore o lato utente?
Lato utente credo sia proprio voluto.
Non ho ancora studiato il gdrcd, ma se proprio vuoi lato gestione, senza dannarti per scrivere le varie query puoi aprire phpmyadmin e cancellare manualmente tabella per tabella la roba di dato utente e vai di damnatio memoriae. SE proprio vuoi.
13/09/2019 19:58:59
//parlo lato Gestione non lato utente.
13/09/2019 21:51:35
Quando viene cancellato un utente, il gdrcd semplicemente lo pone in uno stato di permessi ( -1 ) che lo rende invisibile, senza cancellare niente, per eliminarlo eliminando tutti i messaggie resto bisogna andare in gestione -> manutenzione land.
15/09/2019 14:32:24 e modificato da nantosuichoken il 15/09/2019 14:48:17
dyrr ha scritto: Quando viene cancellato un utente, il gdrcd semplicemente lo pone in uno stato di permessi ( -1 ) che lo rende invisibile, senza cancellare niente, per eliminarlo eliminando tutti i messaggie resto bisogna andare in gestione -> manutenzione land.
Innanzitutto ti ringrazio anche io per la risposta ma non ho capito come risolvere ciò che dall'interno della land non si può fare perché evidentemente il problema è a monte (nel database) da risolvere.
I permessi -1 rendono parzialmente invisibili i cancellati. Su land che viaggiano con centinaia di iscrizioni l'anno, cambi di personaggio (quindi cancellazione) di 1 o 2 personaggi al mese dello stesso giocatore, risulta che:
- i personaggi cancellati negli anni, nonostante la corretta manutenzione in land, sono sempre visibili come lavoro generico (pur avendo permessi -1).
- I loro messaggi sono automaticamente ereditati da personaggi che si iscrivono con lo stesso nome o simile (stesso nome ma con un accento in più o carattere speciale, che il programma permette anche se non dovrebbe) dopo un paio di settimane o un mese dalla cancellazione. Nonostante la cancellazione effettuata manualmente in "amministra organizzazioni" i personaggi cancellati sono sempre visibili (e con risultato puramente random) nella tendina "espelli".
Il problema sarebbe minore in caso di un totale di 30/40 personaggi attivi e pressappoco fissi, ma questa mole di cancellazioni spurie lasciano visibili in land personaggi non solo cancellati in quel momento ma anche per i precedenti anni (moltiplicato per ogni player e risultato random rallenta la land nonostante la manutenzione regolare in land e la soluzione del dato mancante e chiave primaria in araldo_letto di GDRCD5.x )
Non sempre si può chiedere a tutti i player il favore di cancellare tutti i messaggi nella loro casella prima della cancellazione del loro personaggio perché durante la pulizia della anagrafe periodica non si può entrare nelle singole caselle per fare ciò che i player non fanno semplicemente perché non accedono più in land da 3 mesi. In caso di cancellazioni (che viaggiano a volte anche su 50 al mese anche solo per un cambio di personaggio), non si può ogni giorno cancellare i messaggi di tutta la land soltanto per evitare che entro il giorno dopo o una settimana un altro utente si ritrovi tutta la messaggistica del precedente perché non è pensabile creare un disservizio volontario a tutti i player attivi a causa della mancanza della funzione di "cancella tutti i messaggi" selettivo per anagrafe e non soltanto il "cancella log messaggi" per periodo di mesi di tutta la land dalla modalità gestione (in land) solo per eliminare i dati correlati alla cancellazione di un personaggio.
È evidente che quindi GDRCD5.2 (o in generale i GDRCD5.X) abbiano qualche elemento mancante per cui i dati "orfani" permangono visibili in land, il database li carica continuamente (perché se entri in menù tendina di espelli e scorri senza richiamare un nome in particolare, ogni volta che chiedi di eseguirlo, il database ti ripropone random il risultato della ricerca mischiando personaggi attivi, inattivi per ban o inattivi per cancellazione in un miscuglio caotico).
Ci chiedevamo se qualcuno avesse risolto questo problema che in land con tanti iscritti e molto dinamiche comporta un rallentamento quasi della portata di araldo_letto in termini di velocità di elaborazione del database nonostante la manutenzione svolta in land che però non comporti disservizi per i personaggi attivi.
Ciò che vorremmo è offrire una land di nuovo veloce come prima di GDRCD5.x, ma non diminuire la qualità di accesso al gioco per utenti e dinamismo in land, senza però portarci appresso tutto ciò che ogni cancellazione comporta perché negli anni lo staff è cambiato e ci ritroviamo a gestire tuttora anche cancellazioni visibili (in amministrazione organizzazione) di anni passati seppure reiterate negli anni successivi.
Io non so dove mettere mano perché
non sono io il programmatore ma sono dello staff della land a cui la programmatrice di cui sopra fa riferimento. Posso assicurare che tutto ciò che è disponibile ai comandi di "gestione" in land viene svolto regolarmente ma, nonostante ciò, alcune problematiche non cambiano generando ritardi di risposta di un database sempre meno performante in termini di velocità e maggiore lavoro dello staff (inutile perché tanto poi quelle voci che dovrebbero essere allora invisibili si vedono e ritornano puntualmente random). Il tutto per non parlare della figura barbina a dover chiedere almeno un paio di volte al giorno il favore ad ogni utente (se attivo quando chiede cancellazione) di cancellare prima i suoi messaggi in posta per poi noi procedere alla espulsione dal lavoro generico, cancellazione manuale dei singoli post nelle bacheche ed, infine, cancellare il suo personaggio sperando che egli/ella effettivamente abbia svolto la cancellazione dei messaggi prima di effettuare logout. Ho personalmente svolto il consiglio su come risolvere la questione araldo_letto all'interno del database, per come da voi consigliato di risolvere, ma questo altro problema continua a persistere forse per questa continua semi visualizzazione di tutto ciò che dovrebbe essere non visibile ma che, a tutti gli effetti, è visibile per il solo staff (quindi, significa che è sempre attivo). Si parla di diverse centinaia di record, temo, che perennemente rimangono lì (anche quando per buona volontà, dici di nuovo di espellere dal lavoro generico il personaggio che fu cancellato) e una estenuante ricerca del nome del personaggio di cui togliere il lavoro generico prima della cancellazione. Finché da PC, è più semplice la ricerca, da cellulare il menu a tendina con risultati assolutamente random diventano da matti per land che esistono da una decina di anni.
Se qualcuno ha trovato una soluzione a questo problema ne saremo grati perché ormai gli utenti subiscono soltanto qualche rallentamento da un anno ad oggi ma non sappiamo più come fare eliminare le fonti del rallentamento, che non dipendono da funzioni di gestione in land ma, a quanto pare, da qualche modifica necessaria plausibile da inserire su database o verifiche da svolgere per comprendere perché la disattivazione dei personaggi cancellati non è completa.
Sapete se c'è forse qualche patch che ci è sfuggita oppure qualche dato da modificare? Non sappiamo più dove altro mettere mano.
Grazie in anticipo per la pazienza.
15/09/2019 14:51:28
Quindi fammi capire bene riassumendo
Se tu prima vai su:
Menù utente -> cancella account
e cancelli un pg
e poi vai su:
gestione-> manutenzione -> Elimina i personaggi provvisoriamente cancellati
Ti rimangono dei dati non cancellati di quel pg?
17/09/2019 02:16:47 e modificato da nantosuichoken il 17/09/2019 02:30:32
dyrr ha scritto: Quindi fammi capire bene riassumendo
Se tu prima vai su:
Menù utente -> cancella account
e cancelli un pg
e poi vai su:
gestione-> manutenzione -> Elimina i personaggi provvisoriamente cancellati
Ti rimangono dei dati non cancellati di quel pg?
Sì, esattamente.
Continui a trovare in:
Servizi -> Amministrazione organizzazione-> espelli
Tutti i lavori in ordine random (prima le corporazioni poi un mix puramente random di personaggi attivi, bannati e cancellati). Più o meno, per i cancellati, sono visibili tutti i lavori generici dei personaggi cancellati degli ultimi 9 anni (e non sono certo pochi l'anno, incluse le pulizie della anagrafe). Rimangono sempre visibili in quella lista che, a lungo andare, diventa sempre più lunga e difficile da gestire (oltre al fatto che ciò rallenti la land).
Oltre a ciò, tutti i messaggi della casella dei messaggi privati: se un personaggio si iscrive il giorno dopo o una settimana dopo con lo stesso nome, eredita nella sua casella tutti i messaggi privati del personaggio precedentemente cancellato secondo procedura. Non parlo quindi soltanto dei log chat e log messaggi visibili dal comando di gestione ma proprio di ciò che l'utente successivo si ritrova in casella precedente al suo messaggio di benvenuto. E spesso ci chiedono cosa devono fare perché non sono messaggi loro ma quelli di qualcun altro precedente la loro iscrizione.
Penso che evidentemente c'è qualche query sul database che non è come dovrebbe essere, quindi ho chiesto alla nostra programmatrice se sapeva se qualcun altro avesse lo stesso problema nostro e se qualcuno avesse capito dove stia l'errore che abbiamo.
Grazie per la pazienza.
18/09/2019 16:31:28
nantosuichoken ha scritto: [quote]dyrr ha scritto: Quindi fammi capire bene riassumendo
Se tu prima vai su:
Menù utente -> cancella account
e cancelli un pg
e poi vai su:
gestione-> manutenzione -> Elimina i personaggi provvisoriamente cancellati
Ti rimangono dei dati non cancellati di quel pg?
Sì, esattamente.
Continui a trovare in:
Servizi -> Amministrazione organizzazione-> espelli
Tutti i lavori in ordine random (prima le corporazioni poi un mix puramente random di personaggi attivi, bannati e cancellati). Più o meno, per i cancellati, sono visibili tutti i lavori generici dei personaggi cancellati degli ultimi 9 anni (e non sono certo pochi l'anno, incluse le pulizie della anagrafe). Rimangono sempre visibili in quella lista che, a lungo andare, diventa sempre più lunga e difficile da gestire (oltre al fatto che ciò rallenti la land).
Oltre a ciò, tutti i messaggi della casella dei messaggi privati: se un personaggio si iscrive il giorno dopo o una settimana dopo con lo stesso nome, eredita nella sua casella tutti i messaggi privati del personaggio precedentemente cancellato secondo procedura. Non parlo quindi soltanto dei log chat e log messaggi visibili dal comando di gestione ma proprio di ciò che l'utente successivo si ritrova in casella precedente al suo messaggio di benvenuto. E spesso ci chiedono cosa devono fare perché non sono messaggi loro ma quelli di qualcun altro precedente la loro iscrizione.
Penso che evidentemente c'è qualche query sul database che non è come dovrebbe essere, quindi ho chiesto alla nostra programmatrice se sapeva se qualcun altro avesse lo stesso problema nostro e se qualcuno avesse capito dove stia l'errore che abbiamo.
Grazie per la pazienza.[/quote]
L'errore e' che quando fai la manutenzione indicata precedentemente da Dyrr, manca una query che cancelli i messaggi dalla tabella "messaggi", lasciandoli solo in backmessaggi (da cui il codice non prende i messaggi per riempire la visual dei messaggi del personaggio.
Stando alla versione BASE di gdrcd 5.4:
gdrcd_query("DELETE FROM messaggi WHERE mittente IN (SELECT nome AS personaggio FROM personaggio WHERE permessi = -1)");
gdrcd_query("DELETE FROM messaggi WHERE destinatario IN (SELECT nome AS personaggio FROM personaggio WHERE permessi = -1)");
gdrcd_query("DELETE FROM backmessaggi WHERE mittente IN (SELECT nome AS personaggio FROM personaggio WHERE permessi = -1)");
gdrcd_query("DELETE FROM backmessaggi WHERE destinatario IN (SELECT nome AS personaggio FROM personaggio WHERE permessi = -1)");
gdrcd_query("OPTIMIZE TABLE messaggi");
Questo pezzo si trova a riga 169 della pagina "gestione_manutenzione.inc.php" e serve appunto per cancellare i messaggi ricevuti ed inviati dal personaggio che ha permessi "-1" e che quindi e' stato esiliato.
Prova ad incollare il vostro codice qui, da riga 153 a 203, per vedere se c'e' qualcosa che non va.
19/09/2019 10:08:02
L'errore e' che quando fai la manutenzione indicata precedentemente da Dyrr, manca una query che cancelli i messaggi dalla tabella "messaggi", lasciandoli solo in backmessaggi (da cui il codice non prende i messaggi per riempire la visual dei messaggi del personaggio.
Stando alla versione BASE di gdrcd 5.4:
gdrcd_query("DELETE FROM messaggi WHERE mittente IN (SELECT nome AS personaggio FROM personaggio WHERE permessi = -1)");
gdrcd_query("DELETE FROM messaggi WHERE destinatario IN (SELECT nome AS personaggio FROM personaggio WHERE permessi = -1)");
gdrcd_query("DELETE FROM backmessaggi WHERE mittente IN (SELECT nome AS personaggio FROM personaggio WHERE permessi = -1)");
gdrcd_query("DELETE FROM backmessaggi WHERE destinatario IN (SELECT nome AS personaggio FROM personaggio WHERE permessi = -1)");
gdrcd_query("OPTIMIZE TABLE messaggi");
Questo pezzo si trova a riga 169 della pagina "gestione_manutenzione.inc.php" e serve appunto per cancellare i messaggi ricevuti ed inviati dal personaggio che ha permessi "-1" e che quindi e' stato esiliato.
Prova ad incollare il vostro codice qui, da riga 153 a 203, per vedere se c'e' qualcosa che non va.
Ok, proverò a vedere se questo risolve il problema, ma manca una query, la cancellazione dei dati relativi al personaggio nel DB Araldo Letto.
23/09/2019 14:03:52
gianni10049 ha scritto: [quote]nantosuichoken ha scritto: [quote]dyrr ha scritto: Quindi fammi capire bene riassumendo
Se tu prima vai su:
Menù utente -> cancella account
e cancelli un pg
e poi vai su:
gestione-> manutenzione -> Elimina i personaggi provvisoriamente cancellati
Ti rimangono dei dati non cancellati di quel pg?
Sì, esattamente.
Continui a trovare in:
Servizi -> Amministrazione organizzazione-> espelli
Tutti i lavori in ordine random (prima le corporazioni poi un mix puramente random di personaggi attivi, bannati e cancellati). Più o meno, per i cancellati, sono visibili tutti i lavori generici dei personaggi cancellati degli ultimi 9 anni (e non sono certo pochi l'anno, incluse le pulizie della anagrafe). Rimangono sempre visibili in quella lista che, a lungo andare, diventa sempre più lunga e difficile da gestire (oltre al fatto che ciò rallenti la land).
Oltre a ciò, tutti i messaggi della casella dei messaggi privati: se un personaggio si iscrive il giorno dopo o una settimana dopo con lo stesso nome, eredita nella sua casella tutti i messaggi privati del personaggio precedentemente cancellato secondo procedura. Non parlo quindi soltanto dei log chat e log messaggi visibili dal comando di gestione ma proprio di ciò che l'utente successivo si ritrova in casella precedente al suo messaggio di benvenuto. E spesso ci chiedono cosa devono fare perché non sono messaggi loro ma quelli di qualcun altro precedente la loro iscrizione.
Penso che evidentemente c'è qualche query sul database che non è come dovrebbe essere, quindi ho chiesto alla nostra programmatrice se sapeva se qualcun altro avesse lo stesso problema nostro e se qualcuno avesse capito dove stia l'errore che abbiamo.
Grazie per la pazienza.[/quote]
L'errore e' che quando fai la manutenzione indicata precedentemente da Dyrr, manca una query che cancelli i messaggi dalla tabella "messaggi", lasciandoli solo in backmessaggi (da cui il codice non prende i messaggi per riempire la visual dei messaggi del personaggio.
Stando alla versione BASE di gdrcd 5.4:
gdrcd_query("DELETE FROM messaggi WHERE mittente IN (SELECT nome AS personaggio FROM personaggio WHERE permessi = -1)");
gdrcd_query("DELETE FROM messaggi WHERE destinatario IN (SELECT nome AS personaggio FROM personaggio WHERE permessi = -1)");
gdrcd_query("DELETE FROM backmessaggi WHERE mittente IN (SELECT nome AS personaggio FROM personaggio WHERE permessi = -1)");
gdrcd_query("DELETE FROM backmessaggi WHERE destinatario IN (SELECT nome AS personaggio FROM personaggio WHERE permessi = -1)");
gdrcd_query("OPTIMIZE TABLE messaggi");
Questo pezzo si trova a riga 169 della pagina "gestione_manutenzione.inc.php" e serve appunto per cancellare i messaggi ricevuti ed inviati dal personaggio che ha permessi "-1" e che quindi e' stato esiliato.
Prova ad incollare il vostro codice qui, da riga 153 a 203, per vedere se c'e' qualcosa che non va.[/quote]
Il codice funziona perfettamente su GDRCD5.2. Basta avere l'accortezza di non aggiungerla dopo il punto in cui si parla dei permessi=-1 ma prima. Si può aggiungere ad esempio alla riga 170 o 171 e funziona, altrimenti non funziona se successiva a questo dettaglio. Questo codice della risposta quotata effettivamente risolve il problema dei messaggi ereditati dai nuovi utenti cancellando quelli del personaggi cancellati da quel momento in poi (per le creazioni successive dei personaggi). Per i precedenti si può risolvere diversamente, incluso dalla normale manutenzione in land.
Cindy,il problema dell'araldo_letto che hai nella versione GDRCD5.4 è perché GDRCD5.x ha una omissione in araldo_letto. Per il nostro programma in land ho provveduto io applicando il problema risolto su gdronline. Il nostro programma è corretto per araldo_letto e non bisogna rimetterci mano. Il tema di cui ti manca qualche dato (lo stesso che mancava in land prima) è che non esiste la chiave primaria su ID in araldo_letto. Ho già provveduto io (e anche per questo problema dei personaggi cancellati). La risoluzione di quel problema di araldo_letto mi pare che fu postata qui il 29 agosto 2019.
Vi ringrazio.
03/06/2020 12:02:43
La query cerca un campo "nome" nella tabella "chat", che mi pare non ne abbia: dovrei cambiare in "WHERE mittente in (etc etc etc)"
Discussione seguita da
Rispondi alla Discussione Segui Discussione Inoltra Discussione Forum Programmazione, Open Source e Hosting Elenco Forum
Articoli, Interviste e altre Risorse!
RAID Shadow Legends ↗
Project Entropy ↗
The Coven ↗
World of the Sea Battle ↗
Seconda Era ↗
World of Tanks ↗
Raja Dunia ↗
Tibia ↗
Foundation Galactic Frontier ↗