Concernant les mises à jour:
Certains utilisent des travaux CRON qui atteignent une certaine page PHP de temps en temps.
Certains utilisent des travaux CRON, exécutant cette fois un certain processus.
Une autre approche consiste à effectuer des mises à jour «juste à temps» - chaque fois qu'une page est chargée, exécutez les mises à jour en attente et effectuez-les à ce stade. C'est généralement ce que vous devez faire si vous ne pouvez pas exécuter des travaux CRON ou des processus de longue durée.
Enfin, d'autres exécutent l'intégralité de l'application Web en un seul processus, afin qu'ils puissent mettre à jour chaque fois qu'ils le souhaitent.
Le système final est le meilleur si vous avez cette option disponible car vous pouvez stocker les données en mémoire. La mise à jour de quelques milliers de lecteurs une fois par minute est triviale si vous modifiez simplement des données dans la RAM plutôt que d'avoir à écrire dans une base de données SQL traditionnelle.
Mais si vous n'avez pas ce luxe, vous pouvez utiliser une sorte de mise en cache. Quelque chose comme memcached peut être une option (en fonction de votre hébergement) qui est à mi-chemin entre la mémoire et une base de données. Vous pouvez stocker des valeurs transitoires dans memcache et les enregistrer uniquement dans la base de données lorsque cela est absolument nécessaire.
Entre memcache et une base de données SQL traditionnelle, il existe d'autres options, par exemple. les différents magasins de clés / valeurs ou magasins de documents: des trucs comme MongoDB , CouchDB , les offres Amazon ou Google, etc ... ie. tous les systèmes sous le terme générique NoSQL . Celles-ci ne vous donnent généralement pas la puissance d'interrogation générique ni toujours toutes les mêmes garanties de sécurité d'une base de données traditionnelle, mais sont souvent beaucoup plus rapides à utiliser. (Ce qui n'est pas si surprenant, car ils font moins pour vous.)
Mais tout cela suppose qu'une base de données normale ne peut pas gérer la charge. En fait, dans la plupart des cas, c'est probablement le cas. Si je dois émettre 10 000 appels UPDATE par minute pour augmenter les niveaux de ressources, ce n'est pas très évolutif une fois que vous commencez à ajouter tout le reste par dessus. Mais si vous changez cela pour mettre à jour la ressource pour tout le monde avec 1 appel SQL, soudain, les choses semblent beaucoup plus positives. Ne surestimez donc pas le coût d'une certaine fonctionnalité, car elle peut souvent être mise en œuvre sous une forme plus efficace.