Symfony 1.4 et Memcache

pausg
Invité n'ayant pas de compte PHPfrance

13 févr. 2012, 11:40

Bonjour,

je fais tourner plusieurs projets sur symfony 1.4 en utilisant memcached.
Néanmoins lorsque je fais des test en local, (par exemple un simple symfony cc) j'ai systématiquement l'erreur

Code : Tout sélectionner

You must have memcache installed and enabled to use sfMemcacheCache class.
Néanmoins je charge bien le memecached.so car pour vérifier que le fichier était bien chargé par le php.ini, j'ai rajouté la ligne manuellement directement dans php.ini et il m'indique bien:

Code : Tout sélectionner

PHP Warning: Module 'memcached' already loaded in Unknown on line 0 Warning: Module 'memcached' already loaded in Unknown on line 0
Est ce que vous savez d'ou cela peut venir??

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

13 févr. 2012, 12:11

en mode console, si tu tapes "php -i | grep memcache" quel est le résultat ?
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

pausg
Invité n'ayant pas de compte PHPfrance

13 févr. 2012, 12:52

Code : Tout sélectionner

php -i | grep memcache /opt/local/var/db/php5/memcached.ini, memcached memcached support => enabled libmemcached version => 0.43 Registered save handlers => files user memcached sqlite

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

13 févr. 2012, 15:26

Et si tu enlèves la ligne du php.ini que tu as rajoutée à la main, et que retapes la commande que je t'ai donnée ?
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

pausg
Invité n'ayant pas de compte PHPfrance

13 févr. 2012, 15:32

Quand j'ai tapé la commande j'avais déjà enlevé la ligne pour supprimer le warning.

Eléphant du PHP | 209 Messages

13 févr. 2012, 15:52

Salut,

C'est normal tu n'as pas installé la bonne librairie. memcache est différent de memcached ;)

http://php.net/manual/fr/book.memcache.php
http://php.net/manual/fr/book.memcached.php

++

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

13 févr. 2012, 16:17

Memcached n'est qu'une version améliorée de Memcache.
Je tourne tout les jours avec Memcached et Symfony 1.4 sans aucun soucis :-k
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Invité
Invité n'ayant pas de compte PHPfrance

13 févr. 2012, 16:39

Oui je sais que memcache et memcached sont différents mais il ne devrait pas y avoir de problème pour utiliser memcached avec symfony... :-k

Eléphant du PHP | 209 Messages

13 févr. 2012, 16:48

Ah autant pour moi dans ce cas, je croyais qu'il s'agissait de deux librairies différentes #-o

Bah... Bon courage :mrgreen:

pausg
Invité n'ayant pas de compte PHPfrance

13 févr. 2012, 17:15

J'ai fait un

Code : Tout sélectionner

sudo port upgrade php5-memcached
qui s'est déroulé sans erreur, mais maintenant j'ai ce warning :

Code : Tout sélectionner

PHP Warning: PHP Startup: Unable to load dynamic library '/opt/local/lib/php/extensions/no-debug-non-zts-20090626/memcached.so' - dlopen(/opt/local/lib/php/extensions/no-debug-non-zts-20090626/memcached.so, 9): Library not loaded: /opt/local/lib/libmemcached.5.dylib Referenced from: /opt/local/lib/php/extensions/no-debug-non-zts-20090626/memcached.so Reason: image not found in Unknown on line 0

pausg
Invité n'ayant pas de compte PHPfrance

14 févr. 2012, 11:46

J'ai réussi a supprimer cette alerte en copiant memcached.so dans le bon répertoire, mais je me retrouve avec mon erreur de départ :

Code : Tout sélectionner

You must have memcache installed and enabled to use sfMemcacheCache class.
:roll:

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

14 févr. 2012, 12:05

Alors, le soucis réside dans le fait que le test fait par la classe sfMemcacheCache ne passe pas.

Le bout de code en question est le suivant :
    if (!class_exists('Memcache'))
    {
      throw new sfInitializationException('You must have memcache installed and enabled to use sfMemcacheCache class.');
    }
Alors que le class_exists('Memcache') devrait détecter memcached

Edit : alors il s'avère que je me suis complétement planté parce que ce code plante lorsque je le teste à la main :shock:
Bon, alors, dans l'idée, c'est effectivement parce que tu as Memcached et pas Memcache que ça plante.

Du coup, je pense qu'en dupliquant sfMemcacheCache vers sfMemcachedCache et en chargeant un new Memcached() au lieu de new Memcache(), tu devrais t'en sortir, car les signatures sont les mêmes.

Par contre, je vais aller faire un tour sur mes codes moi, du coup :/
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

pausg
Invité n'ayant pas de compte PHPfrance

14 févr. 2012, 12:55

Merci zeus pour ton aide, je pense en effet que c'est la bonne voie.

J'ai remplacé dans sfMemcacheCache le new Memcache() par un new Memcached().

Il passe bien le premier test mais bloque plus loin:

Code : Tout sélectionner

Fatal error: Call to undefined method Memcached::pconnect() in /usr/share/symfony1.4/lib/cache/sfMemcacheCache.class.php on line 72

pausg
Invité n'ayant pas de compte PHPfrance

14 févr. 2012, 15:35

J'ai résolu mon problème, j'avais bien installé php5-memcached mais j'avais oublié php5-memcache.

Un petit

Code : Tout sélectionner

sudo port install php5-memcache
et tout fonctionne!

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

14 févr. 2012, 16:46

Ah bah maintenant oui, c'est sûr, vu qu'il utilise memcache ;)
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer