2009-12-15 6 views
1

Je pense à l'écriture d'une bibliothèque d'extension PHP qui utilisera la bibliothèque memcached. Il est trivial de simplement lier ma bibliothèque à memcache shlib.Extension PHP qui utilise memcached

Cependant, je ne sais pas ce qui se passera si mon utilisateur (bibliothèque d'extension) utilise déjà memcache sur son site Web. Mes questions sont:

  1. Est-il possible d'avoir (éventuellement différentes versions) de memcache sur la machine?
  2. Est-il préférable de lier de façon statique ou dynamique à memcache lors de la construction de la bibliothèque d'extension? (Pour répondre aux incompatibilités de version - en supposant memcache est rétrocompatible, sinon tous les paris sont éteints)

Les questions essentiellement dégénérer à la façon dont peut-on sauvegarder une bibliothèque d'extension, ils ont écrit si elle a une dépendance à l'égard d'un fichier tiers qui peut déjà être utilisé sur le site Web sur lequel la bibliothèque d'extension va être utilisée?

La question peut probablement être légèrement mal posée, mais j'espère que vous comprenez l'essentiel de ce que je demande.

Répondre

4

Attention, il y a deux extensions memcache pour PHP, l'une est appelée memcache, l'autre memcached, la première utilise sa propre implémentation du protocole memcache, la dernière utilise la bibliothèque.

Si vous utilisez le premier, vous ne devriez pas avoir de conflit, mais vous devez prendre soin de memcache par vous-même. Je suggère de construire une extension qui dépend de memcached et re utilise la bibliothèque trouvée.

+0

Informations utiles en effet Johannes. Je vais lire sur les deux pour obtenir plus d'informations –

+0

Toutes les preuves pointent vers l'utilisation de memcached (qui en effet vous suggéré aussi bien). Maintenant, en ce qui concerne l'implémentation - puis-je faire directement des appels à la bibliothèque libmemcached C++ sous-jacente, ou dois-je passer mes appels via l'extension PHP pour memcache? (J'espère que ce n'est pas le cas) –

+0

Si l'extension est chargée, la bibliothèque est disponible et peut être appelée. Je pense un peu à l'étape de compilation ... c'est facile si vous construisez les deux extensions en PHP (cd php-src/ext; cp -r $ memcached /.; Cp -r $ yourext; cd ..; ./buildconf; ./configure --with-memchached) .... en les construisant individuellement, vous devrez peut-être copier la détection de la bibliothèque à partir de config.m4 de memcached ... mais je ne l'ai jamais examiné, peut-être que vous pourriez demander plus d'opinions sur pecl-dev [at] lists.php.net - le mainteneur de l'extesnsion devrait aussi y lire – johannes