J'ai un jeu de données réactif relativement important dérivé de l'interrogation d'un fichier puis de la lecture d'un fichier dans un intervalle prédéfini. Les données sont fréquemment mises à jour et nécessitent un rechargement constant. Certes, le rechargement pourrait être fait de manière incrémentale et ajouté à l'objet existant dans R, mais ce n'est pas le cas. Cependant, actuellement, cette action est effectuée pour chaque utilisateur de l'application brillante bien que les données soient les mêmes d'une session à l'autre. La seule façon dont je suis venu avec une solution ronde était de déterminer si la session est la première, et que cette session soit le maître pour la mise à jour des données par interrogation. Les sessions suivantes ne pas interroger à condition qu'il existe toujours un master
.Partage de jeux de données réactifs entre des sessions utilisateur dans Shiny
Existe-t-il un moyen plus simple d'obtenir le même résultat sans gérer cette relation maître?
C'est presque comme un besoin d'un appel réactif à l'intérieur de la fonction globale qui fonctionne pour le compte de tous les clients/sessions.
Toutes les bonnes suggestions. Peut-on attribuer une variable réactive globale en dehors de 'shinyServer()'? Je crois que j'ai déjà essayé cela sans succès. Je vais tester cela à nouveau. C'est presque comme si j'avais besoin d'interroger/mettre à jour l'ensemble de données en dehors de 'shinyServer()' et mettre à jour une variable réactive globale de sorte que lorsque ces données changent globalement, la vue de chaque utilisateur est mise à jour. – theGreatKatzul
Vous avez raison, vous ne pouvez pas créer de variable _reactive_ en dehors de 'shinyServer()' mais vous pouvez créer une variable dans un environnement R global, accessible depuis n'importe quelle fonction et/ou boucle, ainsi que votre serveur Shiny et vos fonctions réactives . Plus sur les environnements dans R ici: https://stat.ethz.ch/R-manual/R-devel/library/base/html/environment.html Mais je voudrais d'abord essayer l'option de base de données. Pourquoi ne pas créer une base de données MySQL ou SQLite, comme je l'ai suggéré précédemment? De cette façon, l'application sera évolutive, car dataframe n'aura pas besoin de charger entièrement dans l'application et n'utilisera pas de RAM –