IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Symfony PHP Discussion :

Variable statique dans un controller?


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite Avatar de -N4w4k-
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2011
    Messages
    545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2011
    Messages : 545
    Par défaut Variable statique dans un controller?
    Bonjour,

    Je suis en train de construire un site avec symfony2 et une notion m'échappe.. Je vais expliquer le contexte histoire que vous puissiez me ré-aiguiller si besoin est.

    J'ai configuré un serveur de jeu (mod de quake3) sur ma machine et le site que je construis permettra aux administrateurs du serveur de le piloter (exécuter des commandes, etc).
    Pour l'instant je suis capable d'afficher une page d'information concernant le jeu en cours (niveau, joueurs, etc) grâce à une requête envoyée au serveur.

    Le problème est que la requête s’exécute à chaque rafraichissement de la page...
    J'aimerais pouvoir garder en mémoire et ressortir les informations pendant 1 minute par exemple, afin d'éviter de surcharger le serveur avec des requêtes toutes les secondes..

    Voici ce que j'ai pour le moment:

    Un service "rcon":
    Code YAML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    services:
        rcon:
            class: Urt\GeneralBundle\Server\ServerRCon
            arguments: ["127.0.0.1", "27960", "<rcon_password>"]
    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    Class ServerRCon
    {
        public $ip;
        public $port;
        public $password;
     
        function __construct($ip, $port, $password)
        {
            $this->ip = $ip;
            $this->port = $port;
            $this->password = $password;
        }
     
        function getStatus ()
        {
             $status = new ServerStatus();
             $status->date = new \DateTime("now");
                 //....
             return $status;
        }
    }

    Une classe ServerStatus:
    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    namespace Urt\GeneralBundle\Server;
     
    Class ServerStatus
    {
        public $map;
        public $img;
        public $players;
    }

    et mon controller:
    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    class DefaultController extends Controller
    {
        public function indexAction()
        {
            $status = $this->get("rcon")->getStatus();
     
            return $this->render('UrtGeneralBundle:Default:index.html.twig', array('status' => $status));
        }
    }

    J'ai essayé de créer une variable statique dans mon controlleur ou encore dans mon service, afin de garder en mémoire le statut, mais rien y fait la viariable est toujours à null quand je reviens dans mon action Index..

    Quel serait la meilleure façon de faire d'après vous?

    Merci d'avance pour vos suggestions

  2. #2
    Membre Expert

    Profil pro
    Inscrit en
    Mai 2008
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 576
    Par défaut
    Par définition, l'état d'un script PHP est détruit une fois ce script exécuté, donc si tu veux persister un état quelconque, tu dois le faire en-dehors de PHP.
    Un système de stockage de clés-valeurs comme Redis ou Memcached fera l'affaire, bonus point pour Redis qui a plus de types de données.

    Autrement, il te faudra utiliser une bonne vieille table MySQL, peut-être avec le moteur MEMORY si tu as assez de RAM, et en faisant toi-même l'invalidation des données après la minute (alors que Redis le fait pour toi).

  3. #3
    Membre émérite Avatar de -N4w4k-
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2011
    Messages
    545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2011
    Messages : 545
    Par défaut
    Ok je vois l'idée. Je suis en train de regarder quelques pages sur Redis et effectivement, on en dit beaucoup de bien!
    Par contre je vois pas grand chose sur la persistance d'objet. Peut être avec des objets Serializable?

    Je vais approfondir ça, et si je trouve rien de plus, je partirai sur les entités Doctrine je pense.

  4. #4
    Membre Expert

    Profil pro
    Inscrit en
    Mai 2008
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 576
    Par défaut
    C'est toi qui définis comment persister tes objets (comme tu le fais avec une base de données).

Discussions similaires

  1. [1.x] déclarer variables statiques dans une classe controller
    Par flora806 dans le forum Symfony
    Réponses: 8
    Dernier message: 15/10/2012, 17h26
  2. Réponses: 6
    Dernier message: 29/03/2010, 21h52
  3. Variable statique dans une méthode
    Par Djakisback dans le forum Langage
    Réponses: 4
    Dernier message: 10/01/2008, 17h51
  4. Réponses: 14
    Dernier message: 05/09/2006, 01h17
  5. [Tableaux] Probleme variable statique dans une classe
    Par Joe Le Mort dans le forum Langage
    Réponses: 7
    Dernier message: 31/08/2006, 11h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo