大规模,多站点的zend项目构想

时间:2012-01-27 20:09:51

标签: php oop zend-framework stackexchange

这对任何建议都是开放的,并且想知道Zend Framework用户是否可以帮助我。

我使用Zend框架构建了中型数据库驱动的网站,可以看到它是一个非常强大的框架。

然而,通过查看像StackExchange.com这样大的东西,想知道如何使用zend实现多站点项目,能够创建一个“主”网站,可以使用配置简单地复制并保持在不同的域上,但扩展了某些功能。

我不是意思,复制网站并链接到同一个框架,但是使用框架,扩展主网站(stackexchange.com)以使主要论坛具有相似的功能但是要创建一个完整的独立网站(stackoverflow) .com)在需要的地方可以具有相同的功能。

我问的原因是因为我并不认为stackexchange开发人员每次都必须重建一个网站,我也不相信他们有79个网站副本,链接到一个或多个框架库。

如果任何堆栈溢出的开发人员或zend极客可能会对此有所了解,那我将是一个快乐的家伙。

谢谢!

2 个答案:

答案 0 :(得分:1)

使用hostname routes可以实现单个应用程序 - 不仅仅是Zend库的单个副本 - 为多个(子)域提供服务。

在DNS和虚拟主机级别,所有域都映射到单个public文件夹。 .htaccess通过index.php推送所有请求。此index.php指向单个APPLICATION_PATH。在引导程序中,主机名路由可用于标识发出请求的域。然后,带有routeShutdown()挂钩的前端控制器插件可以读取其他特定于主机名的配置,并采取其他特定于主机名的操作(例如,设置布局)。

答案 1 :(得分:0)

我相信模块化方法在这里效果最好。

我认为David Weinraub在使用前端控制器routeshutdown()钩子方面有一个很好的方法 - 我会做同样的事情,但是用它来设置默认模块,例如www.site1.com将查看来自site1模块的服务内容 - 该模块扩展了Core模块。

我以与下面类似的方式设置应用程序:

|Project
    |-Application
        |-configs
        |-controllers
        |-models
        |-modules
            |-core
            |-site1
            |-site2
            |-site3
        |-views
        |-Bootstrap.php
    |-Docs
    |-Library
    |-Public
    |-.zfproject.xml

使用Core模块,'子站点'将从Core模块扩展控制器并提供您正在寻找的功能

  

'可以在必要时具有相同或更多功能。'