web-dev-qa-db-fra.com

Noms uniques transitoires

Quelle serait la bonne façon d'attribuer un nom différent à chaque transitoire pour chaque instance d'un plugin utilisé comme widget ou shortcode?

1
PoseLab

Les transitoires ont une limite pratique sur la longueur de la clé (45 symboles ou quelque chose du genre), de sorte que l'utilisation de clés dynamiques a tendance à présenter un risque d'endommager les clés trop longtemps et de provoquer leur panne.

Une des pratiques courantes consiste à former une chaîne unique (combinaison du nom du plugin et du type de données en cours de sauvegarde, etc.) et à la hacher avec md5() à utiliser. clé transitoire de longueur prévisible fixe.

Pour plus de clarté, vous pouvez utiliser le nom du plug-in pour préfixer le hachage md5. Il est donc clair d'où vient le transitoire lorsque vous le voyez dans la base de données.

1
Rarst

La longueur maximale de clé mentionnée par Rarst a été étendue de 45 caractères à 172 caractères (voir https://core.trac.wordpress.org/ticket/13310 ), ce n'est donc plus un problème dans la plupart des cas.

Généralement, vous pouvez simplement créer un nom comme {plugin prefix}-{name of transient}-{unique id}; Par exemple, abcd-remote-api-results-15 ou abcd-expensive-query-results-foo

L'identifiant unique sera généré différemment en fonction du contexte. Les widgets ont un ID d'instance associé ($this->number), vous pouvez donc l'utiliser. Les codes abrégés ont une combinaison unique de paramètres, vous pouvez donc utiliser ce paramètre (md5( serialize( $attributes ) ).

1
Ian Dunn