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 :

Service appelé a chaque page automatique


Sujet :

Symfony PHP

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    228
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 228
    Par défaut Service appelé a chaque page automatique
    Bonjour,

    j'ai crée un serveur et j'aimerai l'appeler à chaque appelle de page , comment je peux faire pour l'appeler pour chaque pages automatiquement.
    Code : 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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    <?php
    namespace BT\PlatformBundle\Access;
     
    use BT\PlatformBundle\Entity\Access;
    class PRAccess
    {
      private $container;
      private $em;
      /*
      - IP
      - page
      - navigateur
      - Utilisateur
      */
     
      private $ip;
      private $url;
      private $browser;
      private $at;
     
      function __construct($entityManager, $container, $request)
      {
            $this->container = $container;
            if ($container != "dev")
            {
     
              $this->em = $entityManager;
              $this->url = $request->getCurrentRequest();
              $this->browser = $_SERVER['HTTP_USER_AGENT'];
              $this->ip = $request->getMasterRequest()->getClientIp();
              $this->create();
            }
      }
     
            public function create()
            {
     
              //on cree un access
                $access = new Access();
                $access->setIp($this->ip);
                $access->setBrowser($this->browser);
                $access->setUrl($this->url);
                $access->setIp($this->ip);
                $this->em->persist($access);
                $this->em->flush();
     
           }
     
    }
    merci d'avance

  2. #2
    Membre émérite Avatar de tdutrion
    Homme Profil pro
    Architecte technique
    Inscrit en
    Février 2009
    Messages
    561
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 561
    Par défaut
    Bonjour !

    Je te laisse voir la documentation, mais ce que tu cherches à faire est d'utiliser un event listener.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    228
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 228
    Par défaut
    Bonjour,
    Merci de cette réponse , mais justement , je suis déjà tombé sur cette article mais je n'ai pas compris comment cela fonctionne

  4. #4
    Membre émérite Avatar de tdutrion
    Homme Profil pro
    Architecte technique
    Inscrit en
    Février 2009
    Messages
    561
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 561
    Par défaut
    En fait à l'intérieur de Symfony, tu as un certain nombre d'évènements qui sont déclenchés dans la boucle de dispatch.

    Dans ton cas, tu veux brancher ton code à chaque requête, assez tôt (pas besoin de savoir quel controlleur ou autre), donc plutôt kernel-request.

    Pour le reste, il te suffit de suivre creating-an-event-listener.

    Sinon pour info, ton serveur web log déjà ces infos (access log), donc il serait mieux de ne pas perdre de temps avec ça (en code, maintenance, processing). Tu devrais plus regarder du côté de la stack ELK et des services comme Loggly ou similaire pour lire les logs et mettre de l'alerting.

  5. #5
    Membre éclairé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2003
    Messages
    307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Février 2003
    Messages : 307
    Par défaut
    Voici un exemple

    Code : 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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
     
     
    use Doctrine\ORM\EntityManager;
    use Doctrine\ORM\EntityManagerInterface;
    use Symfony\Component\EventDispatcher\EventSubscriberInterface;
    use Symfony\Component\HttpKernel\Event\GetResponseEvent;
    use Symfony\Component\HttpKernel\KernelEvents;
    use Symfony\Component\HttpKernel\KernelInterface;
     
    class KernelSubscriber implements EventSubscriberInterface
    {
        /**
         * @var EntityManager
         */
        private $entityManager;
        /**
         * @var KernelInterface
         */
        private $kernel;
     
        public function __construct(EntityManagerInterface $entityManager, KernelInterface $kernel)
        {
     
            $this->entityManager = $entityManager;
            $this->kernel = $kernel;
        }
     
        public static function getSubscribedEvents()
        {
            // return the subscribed events, their methods and priorities
            return array(
                KernelEvents::REQUEST => array(
                    array('log', 0),
                ),
            );
        }
     
        public function log(GetResponseEvent $event)
        {
            $request = $event->getRequest();
            if ($this->kernel->getEnvironment() == "dev") {
     
            }
            $request->getClientIp();
            $request->getUser();
            $request->getRequestUri();
        }
     
    }

    Je ne sais pas si pour obtenir l'environnement, c'est la bonne solution

Discussions similaires

  1. appelle d'une page php a chaque x seconde
    Par rezguiinfo dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 12/01/2011, 17h28
  2. Désactiver le cache sur une méthode d'un service WCF appelée depuis une page ASPX
    Par zar dans le forum Windows Communication Foundation
    Réponses: 0
    Dernier message: 18/03/2009, 09h41
  3. appel d'un java web service à partir d'une page web
    Par issamos4 dans le forum Services Web
    Réponses: 2
    Dernier message: 31/05/2007, 14h26
  4. [Reporting Service] Erreur lors de l'appel de la page
    Par isame dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 21/05/2007, 17h27
  5. Réponses: 1
    Dernier message: 26/02/2007, 09h44

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