Welcome to Bukkit France

Inscrivez-vous maintenant pour profiter d'un accès total à tout le contenu offert par la meilleur communauté Bukkit française ! Une fois inscrit et connecté, vous pourrez contribuez à la communauté en postant vos propres sujets et questions ou en répondant à ceux existants. Vous pourrez aussi customiser votre profil, recevoir des points de réputations, communiquer avec les autres membres via le chat, et plus encore! 

  • Annonces

    • Pskyco

      Bukkit France passe sous Discord !   02/20/16

      Bukkit France est désormais passé sur Discord, au revoir donc notre vieux Teamspeak ! Téléchargez le client et venez nous rejoindre sur notre salon en suivant les instructions suivantes.
      M-à-j du 25/02/2017 : Désormais, seuls les comptes actifs sur le forum se verront donner l'accès au Discord, ce dernier n'est pas une plateforme d'aide de la même manière que le chat.
Knockyy

[Question] .YML font ils lag?

11 messages dans ce sujet

Version (serveur) : ...

API utilisée : Forge/ModLoader/Vanilla IDE utilisé : Eclipse, Intellij

Explications du problème rencontré :

 

Bonjour, 

 

ce n’est pas vraiment un problème mais plutôt une question. Les Config.YML font ils lag le serveur si ils sont trop gros lorsque l’on écrit / lit dedans ? Car je n’ai pas de bdd donc impossible d’utiliser Mysql. En sachant que un .yml représente 1 joueur avec dedans différents données (Stats, etc).

 

Ducoup m’a question est : Peut t on faire un .yml / joueur avec dedans beaucoup d’info sans lag de serveur ?

 

Recherches effectuées : Google, Forums

Informations supplémentaires : (screen par exemple)

Partager ce message


Lien à poster
Partager sur d’autres sites

Question sans réponse. Ca ne "va pas faire lag" si tu l'utilise correctement (comme tout) mais c'est sur que si tu get/set des valeurs h24 sans arrêt oui ça va faire lag.

Il y a 7 heures, Knockyy a dit :

? Car je n’ai pas de bdd

Sqlite ;)

Partager ce message


Lien à poster
Partager sur d’autres sites

Ce n'est pas une très bonne idée d'avoir 1 fichier par joueur, ca devient vite lourd. Si tu veux rester dans les fichiers le mieux est encore un énorme fichier dans lequel tu mets tous les joueurs.

 

Après les fichiers .yml sont des fichiers config, pas des fichiers prévus pour sauvegarder plein de données. Je te conseille plutôt d'utiliser du .xml pour cette utilisation ou du json.

 

À chaque fois que tu écris/lis dans un fichier tu fais un accès au disque dur de la machine, et effectivement c'est relativement lent par rapport à un accès à la RAM. C'est pour ça qu'il est préférable de sauvegarder les données chaque 15min par exemple.

 

 

1 personne aime ça

Partager ce message


Lien à poster
Partager sur d’autres sites
il y a une heure, Wisteca a dit :

Ce n'est pas une très bonne idée d'avoir 1 fichier par joueur, ca devient vite lourd

Tout dépend de l'utilisation, charger un très gros fichier est long alors que si tu as besoin d'une seul valeur pour un seul joueur ça peut être plus efficace de faire 1 fichier par joueur.

il y a une heure, Wisteca a dit :

Après les fichiers .yml sont des fichiers config, pas des fichiers prévus pour sauvegarder plein de données. Je te conseille plutôt d'utiliser du .xml pour cette utilisation ou du json.

Je suis tout à fait d'accord ;)

1 personne aime ça

Partager ce message


Lien à poster
Partager sur d’autres sites
Il y a 23 heures, PimaPvP a dit :

Tout dépend de l'utilisation, charger un très gros fichier est long alors que si tu as besoin d'une seul valeur pour un seul joueur ça peut être plus efficace de faire 1 fichier par joueur.

Je suis tout à fait d'accord ;)

Oui mais en général tu charges ton fichier au démarrage du serveur, et là peut importe le temps de chargement :)

1 personne aime ça

Partager ce message


Lien à poster
Partager sur d’autres sites

Merci de vos réponses ;)

 

pour le chzrgement / sauvegarde :

 

je charge tous les .yml au démarrage du plugin et pour les sauvegardes, lorsque le plugin se désactive

 

Je vais regarder pour passer sous JSON car ça doit revenir au même qu’un YML pour set/get les données 

Partager ce message


Lien à poster
Partager sur d’autres sites

SI c'est juste au chargement/déchargement du serveur ça devrait pas poser de problème pendant le jeu. Avoir un fichier yml par joueur c'est pas super, tu pourrais essayer de regrouper les joueurs. Mais même sans regrouper ça devrait être suffisamment rapide. On parle pas de 50Mo par joueurs là :)

L'avantage de séparer c'est aussi que tu peux mettre à jour que les fichiers des joueurs dont les infos ont changé, et aussi ne charger que ceux utiles. Si tu regroupe tout faudra tout charger et tout réécrire à chaque fois.

 

Donc en gros, si t'as pas masse de données par joueur ça devrait passer sans problème.

 

Concernant le format, si les admins du serveur ne modifient pas ta config, c'est-à-dire si c'est juste le stockage du plugin, alors c'est mieux de prendre JSON oui. Ça sera plus rapide à lire et à écrire.

Modifié par TheElectronWill

Partager ce message


Lien à poster
Partager sur d’autres sites

Merci de ta réponse ! 

 

En effet je m’en sert pour stocker toutes les statistiques des joueurs ainsi que d’autres informations du style 

 

Players

     <uuid> du joueur 

               kit

                     1: 

                      Ability: 

                           PVP:

                               cooldown : X

                               damage : X 

                          ^ Ceci se répète pour environ une 70ene d’Ability^

                      points:

 

En gros je stock les Kits crées par le joueur avec le nombre de points utilisé / Kit ainsi que les changements apportés aux Ability du style le Cooldown, les dégâts, etc et ça Avec environ 70 Ability disponibles donc en sois est-ce vraiment utile de rééditer tout le système de stockage pour passer au JSON ? 

Partager ce message


Lien à poster
Partager sur d’autres sites
Le 12/11/2017 à 19:08, TheElectronWill a dit :

L'avantage de séparer c'est aussi que tu peux mettre à jour que les fichiers des joueurs dont les infos ont changé, et aussi ne charger que ceux utiles. Si tu regroupe tout faudra tout charger et tout réécrire à chaque fois.

 

Une autre alternative serait d'utiliser l'api SAX pour charger qu'une seule partie de fichiers xml. Je ne l'ai jamais utilisée mais ca doit être sympa ;)

 

https://fr.m.wikipedia.org/wiki/Simple_API_for_XML

 

 

Et

 

https://openclassrooms.com/courses/java-et-le-xml/un-peu-de-sax

 

Après je dis pas que c'est mieux.

 

@Knockyy

Vu la structure de ton fichier le format xml irait à ravir x)

 

Modifié par Wisteca

Partager ce message


Lien à poster
Partager sur d’autres sites

Le xml c'est encore plus lourd, et puis SAX peut pas deviner où sont les parties (à moins de stocker un index) donc y a bien un moment où il lira tout...

 

J'aurais bien dit "passe en JSON c'est simple" mais c'est sans compter sur le fait que Bukkit n'a pas de JsonConfiguration -_- Du coup soit tu laisse comme ça tant que tu ne mesures pas de ralentissement, soit t'utilise une lib externe pour gérer ta config. Par exemple la mienne ^^ Je fais un peu du placement mais la v3 est vraiment bien :D

Y a aussi quelques projets de faire une JsonConfiguration pour bukkit, mais ça plus l'air maintenu : ici, .

1 personne aime ça

Partager ce message


Lien à poster
Partager sur d’autres sites

Je vasi regarder ce petit produit :P merci de vos réponses les gars ;) 

Partager ce message


Lien à poster
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !


Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.


Connectez-vous maintenant

  • En ligne récemment   0 membre est en ligne

    Aucun utilisateur enregistré regarde cette page.