tanoconsulting/ezdbintegritybundle

验证eZPlatform 3(又称Ibexa OSS/DXP)的数据库数据和二进制文件存储

资助包维护!
tanoconsulting

安装: 6

依赖项: 0

建议者: 0

安全: 0

星级: 0

观察者: 2

分支: 1

开放问题: 0

类型:symfony-bundle

1.0.0-BETA1 2021-05-03 11:02 UTC

This package is auto-updated.

Last update: 2024-09-06 01:02:27 UTC


README

此包是eZPublish/eZPlatform 1和2的eZDBIntegrity扩展的eZPlatform 3(即Ibexa OSS/DXP)端口。

目标

允许检查eZPlatform数据库中的数据完整性

  • 外键
  • 不能表示为外键的通用数据完整性规则
  • 内容字段值根据其内容类型字段定义(尚未实现)

允许检查eZPlatform存储文件的完整性(图像、媒体和内容中的二进制文件)。

需求

eZPlatform 3,运行在MySQL/MariaDB上

安装

通过Composer安装: composer require "tanoconsulting/ezdbintegritybundle:1.0.0-beta2" "tanoconsulting/datavalidatorbundle >=1.0.0-BETA1"

入门

此包所做的只是添加一些cli命令。为了开始,尝试运行

php bin/console ezdbintegrity:check:schema --dry-run

php bin/console ezdbintegrity:check:schema

php bin/console ezdbintegrity:check:schema --display-data

php bin/console ezdbintegrity:check:storage

php bin/console ezdbintegrity:check:storage --check-db-orphans

php bin/console ezdbintegrity:check:storage --check-db-orphans --display-data

所有命令都会在运行时打印更多关于正在发生的事情的信息,以及发现的违规行为的更多详细信息,如果使用-v选项运行。

提示

  • 为了避免大查询导致的内存使用过多,当在"调试模式"下运行Symfony,例如通常用于"dev"环境时,请向您的命令添加--no-debug选项。如果可能,使用非调试的Symfony环境。

  • 如果您仍然收到"允许的内存大小"致命错误,请使用php -d memory_limit=-1运行命令。

  • 解决"缺少图像"的最佳方法是仅识别与当前已发布内容版本相对应且不是自动生成别名的缺失图像文件。同样,对于缺失的二进制文件,识别仅与当前已发布内容版本相对应的文件是有用的。

    可以通过以下命令实现

      php bin/console ezdbintegrity:check:storage --check-db-orphans --display-data -v | grep -v '"v_status":null' | grep -v '"alias":true'
    
  • 如果您有很多图像和变体,定期从图像存储文件夹中修剪所有空目录可能值得,尤其是在执行备份之前或您的磁盘空间不足时。查找当前目录中所有空子目录的快速单行命令是

      find . -type d -empty
    

    并删除它们

      find . -type d -empty -delete
    

待完成事项

  • 验证内容字段数据
  • 允许用户为他们的自定义表添加约束定义
  • 测试检查是否与多仓库设置一起工作
  • 测试检查是否与ezdfs设置一起工作
  • 测试此包是否可以与ezplatform 2一起工作
  • 改进输出格式化和运行检查子集的能力
  • 改进存储检查
    • 更努力地寻找磁盘上可用的候选替换文件,以替换缺失的图像(例如,查找{$file}_reference.jpg)
    • 验证图像变体文件(即检查没有原始文件的现有别名)

免责声明

!!! 不要盲目删除数据库中报告为外键违规的数据!!!

!!! 不要盲目删除报告为孤儿存储文件的存储文件!!!

如果您这样做,我们不承担任何后果。您应仔细调查此类违规的原因。有很大可能性,问题在于此扩展而不是您的数据 - 提供的FK定义是从现有代码库和数据库中反向工程得到的,并非一成不变。