2014-04-24 1 views
1

Je veux mettre à jour une option qui est un tableau en ajoutant une nouvelle valeur, mais il n'y a pas d'atomicité ou de garantie d'intégrité des données.Existe-t-il un moyen atomique de mettre à jour update_option dans Wordpress (pour assurer l'intégrité des données)?

EXEMPLE

//Get the option value (an array) 
$val = get_option("some-option"); 

//Add to the array 
$val[] = "something"; 

/** Here, another session might already have it and is calling "update_option" */ 

//Save back (this overwrites whatever that other person did) 
update_option("some-option", $val); 

Y at-il quelque chose dans wordpress qui offre atomicité?

+0

Vous pouvez obtenir une réponse plus rapide @ le [officiel WordPress échange] (http://wordpress.stackexchange.com/) –

+0

@Howdy_McGee merci, je vais essayer ça –

Répondre

0

Ma première pensée était d'ajouter une deuxième option qui agit comme un verrou de données.

Vous effectuerez une vérification pour voir si le verrou est revenu faux avant d'être autorisé à modifier l'option. Après avoir donné un peu plus de réflexion, cependant, une table personnalisée ne serait pas mieux adaptée à vos besoins. Si plusieurs personnes mettent à jour la même option, une table a plus de sens.

Quoi qu'il en soit, voici comment la serrure pourrait fonctionner:

if (false === get_option('some-option-lock')) { 
    update_option('some-option-lock', true); 

    $val = get_option("some-option"); 

    //Add to the array 
    $val[] = "something"; 

    update_option("some-option", $val); 

    update_option('some-option-lock', false); 
} 
Questions connexes