ehough / pagodabox-bundle
一个使配置和部署您的应用程序在Pagoda Box上变得简单的Symfony2扩展包。
此包的官方仓库似乎已消失,因此该包已被冻结。
Requires
- php: >=5.3.0
- doctrine/doctrine-bundle: ~1.2
- symfony/framework-bundle: ~2.3
Requires (Dev)
- mockery/mockery: dev-master@dev
- phpunit/phpunit: 3.7.*
This package is not auto-updated.
Last update: 2019-02-27 11:34:32 UTC
README
此项目不再维护。一个使配置和部署您的应用程序在Pagoda Box上变得简单的Symfony2扩展包。
####功能
- 注重高性能
- 使用无需额外设置轻松配置Doctrine连接参数
- 轻松配置Doctrine以利用Pagoda Box缓存
- 全composer支持
- 不要提交您的
vendor目录!此扩展包在Pagoda Box构建过程中安装您的依赖项。 - 可选地利用GitHub OAuth令牌以防止超时
- 不要提交您的
- 出色的测试覆盖率 - 准备好生产使用
###要求
- Symfony 2.3+
###安装 将以下内容添加到您的composer.json
"require": { "ehough/pagodabox-bundle": "dev-master" }
然后在app/AppKernel.php中注册该扩展包
public function registerBundles() { return array( // ... new Ehough\Bundle\PagodaBoxBundle\EhoughPagodaBoxBundle() ); }
###功能:易于应用程序部署
此扩展包最有价值的功能可能是将基于composer的Symfony2应用程序正确部署到Pagoda Box。只需添加以下两个after_build步骤
#####Boxfile
web1: shared_writable_dirs: -<relative path to your Symfony app root>/app/logs # notice: no app/cache directory! after_build: - curl -Lso ./gopagoda.sh https://raw.github.com/ehough/EhoughPagodaBoxBundle/master/Resources/bash/gopagoda.sh; sed -i -e 's/\r//' gopagoda.sh; - bash ./gopagoda.sh <relative path to your Symfony app root> <optional GitHub OAuth token>
上述两个after_build步骤实际上下载并执行gopagoda.sh,这将代表您执行以下操作
- 从getcomposer.org下载
composer.phar。 - 如果您提供了GitHub OAuth令牌,配置composer以使用它。
- 安装您的应用程序的依赖项(
composer install) - 创建一个优化的类加载器以实现最大化的类加载性能(
composer dump-autoload --optimize) - 构建任何assetic资产(
app/console" "assetic:dump" --env=prod) - 清除任何剩余的Symfony缓存(
app/console" "cache:clear" --env=prod) - 预热Symfony缓存(
app/console" "cache:warmup" --env=prod) - 触发一个初始HTTP请求到Symfony以完成缓存的预热(
php web/app.php)
这将完全准备好您的Symfony2应用程序在生产之前部署到其最终的Web服务器。请注意,我们不使用app/cache目录进行共享的可写存储。真棒!
###功能:Redis会话存储Pagoda Box 强烈建议您使用Redis缓存进行会话存储。此扩展包使此任务尽可能简单。
#####Boxfile
web1: php_extensions: -redis php_session_save_handler: redis php_session_save_path: "tcp://tunnel.pagodabox.com:6379"
#####app/config_prod.yml
ehough_pagoda_box: store_sessions_in_redis: true
就是这样!您的Symony会话现在将神奇地安全存储在Redis中。
###功能:更好的注释缓存默认情况下,Symfony将使用基于文件的缓存作为其注释缓存的缓存。使用此扩展包,我们可以轻松地使用Pagoda Box缓存。
#####Boxfile
web1: php_extensions: # at least one of these -memcache -memcached
#####app/config_prod.yml
ehough_pagoda_box: annotations_cache: type: memcached # memcache or memcached pagoda_env_id: CACHE2 # the Pagoda Box cache ID you'd like to use for the annotations cache
根据pagoda_env_id参数中指定的缓存的实际类型,type参数可以具有memcache、memcached或redis的值。
###功能:更易于配置Doctrine连接Pagoda Box 提供有关如何配置您的Symfony数据库的说明。但是,此扩展包使该过程更加简单。
#####app/config_prod.yml
ehough_pagoda_box: doctrine: dbal: connections: default: pagoda_env_id : DB1 platform_class: Doctrine\DBAL\Platforms\MySqlPlatform
正如您在上面的 app/config_prod.yml 中所见,您定义了一个 Doctrine DBAL 连接标识符到对应的 Pagoda Box 数据库的映射。在上面的示例中,我们将 default DBAL 连接映射到 DB1。也就是说,default 连接将接收环境变量 DB1_HOST、DB1_PORT 等。
对于每个连接,还需要指定一个 platform_class。这应该是表示底层 DB 连接的类名,并且应该是一个继承自 \Doctrine\DBAL\Platforms\AbstractPlatform 的类。这一步是必要的,以便 \Symfony\Bridge\Doctrine\CacheWarmer\ProxyCacheWarmer 能够执行其任务,而无需接触数据库(我们目前还没有访问权限)。由于 Pagoda Box 目前仅支持 MySQL,您将始终将 platform_class 设置为 Doctrine\DBAL\Platforms\MySqlPlatform。
在大多数情况下,您只需要配置 default DBAL 连接,但您可以定义任意多的连接映射。例如:
ehough_pagoda_box: doctrine: dbal: connections: default: pagoda_env_id : DB1 platform_class: Doctrine\DBAL\Platforms\MySqlPlatform other: pagoda_env_id: DB2 platform_class: Doctrine\DBAL\Platforms\MySqlPlatform another: pagoda_env_id: DB3 platform_class: Doctrine\DBAL\Platforms\MySqlPlatform
###功能:更简单的 Doctrine 缓存配置 默认情况下,Symfony 为 Doctrine 的查询、结果和元数据缓存提供了内存缓存。使用此包,我们可以轻松配置 Doctrine 以利用任意数量的 Pagoda Box memcached 实例。
#####Boxfile
web1: php_extensions: # at least one of these -redis -memcache -memcached
#####app/config_prod.yml
ehough_pagoda_box: doctrine: orm: caching: # a map of Doctrine ORM entity manager IDs to default: metadata: # metadata, query, or result type: memcache # memcache or memcached pagoda_env_id: CACHE3 # the Pagoda Box cache ID. This must be a Memcache cache! query: type: memcache pagoda_env_id: CACHE4 result: type: memcache pagoda_env_id: CACHE5
在上面的示例中,我们正在配置 default 实体管理器的元数据、查询和结果缓存。每个缓存都接受一个类型(memcache 或 memcached)以及 Pagoda Box memcached 实例标识符。
###配置参考
ehough_pagoda_box: store_sessions_in_redis: true # use Redis for session storage? annotations_cache: type: redis # memcache or memcached pagoda_env_id: CACHE2 # the Pagoda Box cache ID doctrine: dbal: connections: # a map of Doctrine DBAL connection IDs to Pagoda Box database IDs default: DB1 # maps the "default" Doctrine DBAL connection to DB1_HOST, DB1_PORT, etc other: DB2 # maps the "other" Doctrine DBAL connection to DB2_HOST, DB2_PORT, etc orm: caching: # a map of Doctrine ORM entity manager IDs to default: metadata: # metadata, query, or result type: memcache # memcache or memcached pagoda_env_id: CACHE3 # the Pagoda Box cache ID. This must be a Memcache cache! query: type: memcache pagoda_env_id: CACHE4 result: type: memcache pagoda_env_id: CACHE5 my_em: metadata: ...