介绍新的Symfony UUID Polob娱乐下载yfill
2019年11月29日·发表的哈维尔Eguiluz
提供的
格雷戈勒Pineau
在# 197.
一个UUID(通用唯一标识符)是一个128位的数字,用于识别计算机系统中的信息。它们在PHP/Symfony应用程序中越来越流行,一些开发人员甚至将它们用作数据库记录的idob娱乐下载(而不是传统的自动递增整数)。
uuid有不同的变体和版本,因此大多数开发人员依赖于外部库,例如UUID PECL包和拉姆齐/ uuid库来生成这些uuid。
ob娱乐下载Symfony Polyfills提供新PHP版本或PHP扩展中引入的流行函数、类和常量的PHP重新实现。例如,它们允许使用PHP 7.3JsonException
在任何PHP版本或PHP 7.4中password_algos ()
函数。
鉴于uuid的流行,我们创建了一个新UUID填充它重新实现了UUID PECL包,可以在PHP 5.3或更高版本中使用。首先,在你的项目中安装polyfill:
1
$Composer需要symfonyob娱乐下载/polyfill-uuid
如果在系统中安装了UUID PECL包,则此填充不执行任何操作。否则,它定义了与PECL包完全相同的常量和函数,因此您可以在代码中使用以下代码:
1 2 3 4 5 6 7 8
$uuid= uuid_create (UUID_TYPE_RANDOM);// $uuid = '79a0f84a-2f15-4ea9-bb2c-49e645845100'$isValid= uuid_is_valid ($uuid);// $isValid = true//其他有用函数:uuid_compare(), uuid_is_null(), uuid_type(),// uuid_variant(), uuid_time(), uuid_mac(), uuid_parse(), uuid_unparse()
当您不能或不想安装PECL包时,UUID Polyfill可以完全取代UUID PECL包。但是,它没有提供(也永远不会提供)与全功能库相同的功能,例如拉姆齐/ uuid
.
关于性能,根据所创建的UUID版本,polyfill比PECL包更快或更慢:
开始创建UUID v1 | 的意思是 | 区别 |
---|---|---|
PECL | 0.525 ?年代 | 最快 |
ob娱乐下载Symfony Polyfill | 1.401 ?年代 | 2.67倍慢 |
拉姆齐/ UUID | 3.907 ?年代 | 7.45倍慢 |
是时候创建UUID v4了 | 的意思是 | 区别 |
---|---|---|
PECL | 4.620 ?年代 | 3.25倍慢 |
ob娱乐下载Symfony Polyfill | 1.422 ?年代 | 最快 |
拉姆齐/ UUID | 1.851 ?年代 | 1.30倍慢 |
发表在#生活在边缘
评论
Tac Tacelosky
2019年11月29日说在开始
谢谢,看起来不错。在Doctrine中使用UUID作为主键的推荐方法是什么?https://github.com/ramsey/uuid-doctrine显然是ramsey uuid的一种方式,是否也会有Symfony的方式?ob娱乐下载我认为MySQL和PostGRES有原生UUID类型,但SQLite没有。那么,该如何将该字段声明为实体中的字段(或主键)呢?
/**
* @ORM \ Id ()
* @ORM \ GeneratedValue ()
* @ORM \列(type =“整数”)
* /
私人$ id;
还有很多警告:https://github.com/symfony/symfony/iob娱乐下载ssues/34712
/**
* @ORM \ Id ()
* @ORM \ GeneratedValue ()
* @ORM \列(type =“整数”)
* /
私人$ id;
还有很多警告:https://github.com/symfony/symfony/iob娱乐下载ssues/34712
亚历克斯Niedre
2019年11月29日说在23:45
@Tac Tacelosky,在SQLite中把主键作为整数可能是有意义的,只是为UUID添加另一个字段,索引它,并在取回东西时使用它。
原因是varchar上的连接比int上的慢得多。
Titouan Galopin写了一篇关于它的好文章:https://titouangalopin.com/auto-increment-is-the-devil-using-uuids-in-symfony-and-doctrineob娱乐下载/
原因是varchar上的连接比int上的慢得多。
Titouan Galopin写了一篇关于它的好文章:https://titouangalopin.com/auto-increment-is-the-devil-using-uuids-in-symfony-and-doctrineob娱乐下载/
评论截止。
为了确保评论保持相关性,旧帖子将被关闭。
Grégoire Pineau is a certified Symfony engineer and a certified Twig designer.
Get certified! Online exams available in all countries.
Register Now