在Wordpress中是否有一种原子方式update_option(以确保数据完整性)?

时间:2014-04-24 16:01:32

标签: php wordpress transactions atomic atomicity

我想通过添加新值来更新作为数组的选项,但是没有原子性或数据完整性的保证。

示例

//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 );

wordpress中是否有提供原子性的东西?

1 个答案:

答案 0 :(得分:0)

我的第一个想法是添加第二个用作数据锁的选项。

在允许修改选项之前,您需要检查锁是否返回false。

在给予它更多考虑之后,不会更好地满足您的需求。如果您有多个人更新相同选项,则表更有意义。

无论如何,锁是如何工作的:

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 );
}