b13/distributed-locks

为TYPO3前端页面生成添加Redis锁定策略,在具有NFS的分布式系统中非常有用。

安装数量: 123,261

依赖者: 0

建议者: 0

安全性: 0

星标: 12

关注者: 3

分支: 8

开放问题: 3

类型:typo3-cms-extension

v2.0.0 2024-06-20 14:16 UTC

This package is auto-updated.

Last update: 2024-09-21 13:07:29 UTC


README

TYPO3有三个内置的锁定策略,它们在运行时选择最适合当前系统设置的。

  • 信号量锁定策略
  • 简单锁定策略
  • 文件锁定策略

然而,当处理多层系统和具有多个前端节点以及NFS文件系统的共享文件系统时,使用更合适的格式特别有帮助。Redis是我们处理多节点场景的选择武器,并且与TYPO3和缓存配合得很好。

此扩展提供了一个Redis锁定机制,将锁存储在(共享)Redis数据库中。

要求

此扩展适用于TYPO3 v8+ LTS,需要PHP包php-redis以及Redis服务器。

安装

通过composer composer require b13/distributed-locks或extensions.typo3.org / 扩展管理器安装此扩展,并在扩展管理器中激活它。

现在将以下行添加到您的LocalConfiguration / AdditionalConfiguration中,以激活Redis锁定。

$GLOBALS['TYPO3_CONF_VARS']['SYS']['locking']['redis'] = [
    'hostname' => '127.0.0.1',
    'database' => 12
];

其他选项

'ttl' (numeric, default is 30sec)
'port' (numeric, default is 6379)
'password' (contains the password, necessary for secure authentication if required by redis)
'priority' (numeric, default is 95) - Set priority for this locking strategy. See LockingApi documentation.

在某些上下文中禁用

如果您有不同的TYPO3_CONTEXT或环境,并且您想关闭整个Redis策略(例如,在您的预发布机器上),您可以在LocalConfiguration / AdditionalConfiguration中设置此选项。

$GLOBALS['TYPO3_CONF_VARS']['SYS']['locking']['redis']['disabled'] = true;

未来开发

应切换到symfony/lock以允许分布式Redis服务和其他锁。

致谢 & 背景

灵感来源于现在不再维护的扩展“redis_lock_strategy”,我们曾多次使用该扩展,但也有一些缺点。

  • 没有为TYPO3 v9在composer模式下提供稳定版本
  • 没有提供发布后的维护者
  • 销毁对象不会删除锁,导致某些死锁场景在损坏的脚本中

感谢Alexander Miehe为我们最初扩展和概念工作。

分享我们的专业知识

找到更多我们从b13到您开发的TYPO3扩展,这些扩展帮助我们向客户项目交付价值。作为我们工作方式的一部分,我们专注于测试和最佳实践,以确保我们所有代码的长期性能、可靠性和结果。