a1comms / gae-support-lumen
为 Lumen 应用提供 Google App Engine & Local SDK 支持。
Requires
- php: >=5.4.0
Requires (Dev)
- illuminate/console: ~5.0
- illuminate/support: 5.0.*
- phpunit/phpunit: ~4.4
This package is not auto-updated.
Last update: 2024-05-01 14:39:52 UTC
README
本地 SDK 支持
此包已从 shpasser 版本修改,以更好地兼容使用本地 GAE SDK 的工作人员。
为 Lumen 提供的 Google App Engine (GAE) 支持包。
当前支持的功能
- 生成通用配置文件,
- 邮件服务提供商,
- 队列服务提供商,
- 数据库连接,
- 文件系统。
有关 Laravel 5 的信息,请参阅 https://github.com/shpasser/GaeSupportL5。
安装
使用 Composer 引入 'shpasser/gae-support-lumen' 和 'illuminate/mail' 包。
"require": { "shpasser/gae-support-lumen": "~1.0", "illuminate/mail": "~5.0" }
在 bootstrap/app.php
- 取消以下行的注释以使用
Facades
$app->withFacades();
- 包含服务提供者
$app->register(Shpasser\GaeSupportLumen\GaeSupportServiceProvider::class);
使用
生成与 GAE 相关的文件/条目。
php artisan gae:setup --config --bucket="your-bucket-id" --db-socket="cloud-sql-instance-socket-connection-string" --db-name="cloud-sql-database-name" --db-host="cloud-sql-instance-ipv4-address" your-app-id
除非使用 --bucket
选项定义了自定义存储桶 ID,否则默认配置了 GCS 存储桶。
当定义了 --db-name
选项时,至少应定义 --db-socket
或 --db-host
之一。
邮件
邮件驱动程序配置可以在 config/mail.php
和 .env.production
中找到,这些配置文件由 artisan 命令修改/生成。无需任何自定义配置。所有发出的邮件消息都使用应用程序管理员的发送地址发送,即 admin@your-app-id.appspotmail.com
。支持电子邮件消息的 sender
、to
、cc
、bcc
、replyTo
、subject
、body
和 attachment
部分。
队列
修改后的队列配置文件 config/queue.php
应包含
return array( ... /* |-------------------------------------------------------------------------- | GAE Queue Connection |-------------------------------------------------------------------------- | */ 'connections' => array( 'gae' => array( 'driver' => 'gae', 'queue' => 'default', 'url' => '/tasks', 'encrypt' => true, ), ... ), );
默认使用 'default' 队列和加密。为了使用队列,您的 app/Http/routes.php
文件应包含以下路由
Route::post('tasks', array('as' => 'tasks', function() { return Queue::marshal(); }));
此路由将由 GAE 队列用于推送作业。请注意,路由和 GAE 队列连接的 'url' 参数指向相同的 URL。有关更多信息,请参阅 https://laravel.net.cn/docs/master/queues#push-queues。
缓存、会话和日志
通过使用特定的驱动程序/处理程序支持缓存、会话和日志组件
- 缓存 - 使用 'memcached' 驱动程序,
- 会话 - 使用 'memcached' 驱动程序,
- 日志 - 使用 'syslog' 处理程序。
提到的驱动程序/处理程序的配置选项由 artisan 命令生成,并可在 .env.production
配置文件中找到。
数据库
Google Cloud SQL 通过 Laravel 的 MySql 驱动器得到支持。连接配置由 artisan 命令添加到 config/database.php
文件中的 cloudsql
部分。可以通过 artisan 命令使用 --db-socket
、--db-name
和 --db-host
选项来配置连接参数。
与数据库相关的环境变量设置在 .env.production
和 .env.local
文件中。
生产环境配置为使用套接字连接,而本地环境配置为通过 Google Cloud SQL 实例的 IPv4 地址进行连接。使用 Google 开发者控制台获取套接字连接字符串并启用数据库实例的 IPv4 地址。
仅当在 local
环境中工作时才支持迁移。
要使用 production
或 local
环境,将相应的文件重命名为 .env
。
文件系统
为了支持 Laravel 文件系统在 GAE 上,artisan 命令修改 config/filesystem.php
文件以包含额外的磁盘
'gae' => [ 'driver' => 'gae', 'root' => storage_path().'/app', ],
并在 .env.production
文件中添加以下行
FILESYSTEM = gae
最后但并非最不重要的是,通过 Composer 引入 'league/flysystem' 包。
"require": { "league/flysystem": "~1.0" }
优化
优化允许应用程序减少对 GCS 的使用,GCS 是目前 GAE 平台上唯一可用的读写存储。
为了优化视图编译,可以使用包含的 cachefs
文件系统,使用 memcached
服务存储编译后的视图。cachefs
不为应用程序提供可靠的存储解决方案,使用 memcached
存储的信息根据 memcached
规则进行管理,并且可能在 memcached
决定时被删除。由于视图可以在不丢失任何信息的情况下重新编译,因此使用 cachefs
存储编译后的视图是合适的。
cachefs
具有以下结构
/ +-- framework +-- views
/framework/views
用于存储编译后的视图。
使用以下选项在 .env.production
文件中启用此功能
COMPILED_PATH = cachefs://framework/views
此外,可以跳过 GSC 存储桶的初始化以提高性能
env_variables: GAE_SKIP_GCS_INIT: true
存储路径将被设置为 GCS 存储桶的 /storage
目录,并且将跳过存储目录结构的创建。
如果没有使用,可以删除文件系统初始化以最小化 GCS 使用。为此,从 .env.production
文件中删除以下行
FILESYSTEM = gae
部署
如果需要,备份现有的 .env
文件,并在部署您的应用程序之前将生成的 .env.production
重命名为 .env
。
下载并安装 PHP 的 GAE SDK,然后部署您的应用程序。