2009-09-14 6 views
2

Juste curieux de savoir comment les gens abordent la multi-location en utilisant Zend (en particulier la structure de répertoires, la base de données, la modularité, les vues par locataire, etc.). Je n'ai pas trouvé trop moi-même, quelqu'un?Multitenancy avec Zend Framework

Répondre

5

Il faut un peu de travail, mais c'est faisable. Je ne suis pas sûr combien mon approche suit la définition la plus stricte de multi-location, mais dans le cas où il vous donne quelques idées:

J'ai une installation de mon application, qui suit largement la structure de projet recommandée (http://framework.zend.com/manual/en/project-structure.project.html). J'ai ensuite une application ZF par site en utilisant l'application. Ceux-ci incluent chacun un lien symbolique vers l'application principale (actuellement dans le dossier de la bibliothèque, bien que cela puisse changer). Les applications du site utilisent chacune la classe bootstrap de l'application principale, mais elles ont leurs propres fichiers de configuration.

L'application comprend un grand nombre de modules, chacun pouvant être activé ou non sur chaque site. J'ai une méthode _initModules() dans le bootstrap qui interroge la base de données pour déterminer quels modules doivent être activés. Ceux-ci sont ensuite amorcés de la manière normale.

Il est possible d'ajouter des chemins de vue supplémentaires (qui sont vérifiés dans l'ordre) à Zend_View, de sorte qu'un site ajoute son propre chemin de vue à la pile. De cette façon, les sites peuvent facilement remplacer les vues de l'application principale. Il serait également possible d'ajouter un répertoire de modèle spécifique au site à include_path, ce qui permettrait aux sites de remplacer les modèles d'application, même si je n'en ai pas encore eu besoin (et cela aurait probablement un impact sur les performances).

+0

Merci pour la réponse, c'est une approche facile à partir de laquelle commencer. Aussi, pas vraiment spécifique à Zend, mais avez-vous une base de données par locataire? Il semble y avoir beaucoup de débats pour savoir si une base de données distincte ou partagée est la meilleure et je suis simplement curieux de savoir ce que les gens font réellement. –

+0

J'ai un DB séparé par locataire. Je pense que la réponse à cette question est en grande partie spécifique à l'application, mais généralement, sauf si vous avez besoin de partager de grandes quantités de données entre les locataires, il me semble beaucoup plus facile d'avoir des bases de données séparées. –