andrewandante / silverstripe-async-publisher
适用于大型数据集的异步发布钩子。
v1.1.0
2022-07-29 11:37 UTC
Requires
- php: ^8
- silverstripe/cms: ^4.11
- silverstripe/versioned: ^1.11
- symbiote/silverstripe-queuedjobs: ^4.10
Requires (Dev)
- phpunit/phpunit: ^9.5
- slevomat/coding-standard: 8.1
- squizlabs/php_codesniffer: ^3.5
README
将写入和发布操作推送到队列作业,以避免浏览器超时
安装
composer require andrewandante/silverstripe-async-publisher
模块安装完成后,只需将AndrewAndante\SilverStripe\AsyncPublisher\Extension\AsyncPublisherExtension
应用于您希望启用队列发布的任何类
--- name: async-publisher-config --- My\SuperSlow\Page: extensions: - AndrewAndante\SilverStripe\AsyncPublisher\Extension\AsyncPublisherExtension
这将默认应用于该类的所有实例。您可以使用扩展中的shouldPreferAsync()
方法进行更细致的配置;例如,您可以将以下内容附加到UserDefinedForm
<?php namespace My\App\Extensions; use SilverStripe\Core\Extension; class ShouldPreferAsyncExtension extends Extension { public function shouldPreferAsync() { return $this->owner->Fields()->count() >= 20; } }
如果用户自定义表单有20个或更多字段,则默认将其设置为排队,否则只需将排队操作添加到“更多选项”菜单
功能
- 用“队列保存”和“队列发布”按钮替换“保存”和“发布”按钮
- 在“更多选项”菜单中添加“立即保存”和“立即发布”(以防万一紧急情况)
- 防止在作业排队时进行编辑,以防止奇怪的竞态条件
截图
待办事项
- 与取消发布和存档一起测试
- 使其更具可配置性和可扩展性
维护者
- Andrew Paxley andrew.paxley@silverstripe.com