我正在构建一个 WordPress 插件,该插件在数据更改时使用服务器发送的事件来更新页面。
这是该代码的片段:
while ( true ) {
// Send the updates to the client.
$this->send_sse_event( 'updates_push', get_transient( 'name_of_the_transient' );
sleep( 5 );
if ( connection_aborted() ) {
break;
}
}
问题是从该脚本发送的事件保存了陈旧的数据...这意味着当对某个 PHP 脚本的另一个请求更改瞬态值时,服务器发送的事件仍然发送旧值,直到我刷新页面。
关于如何解决这个问题有什么想法吗?
问题似乎是托管提供商的默认对象缓存。调用
wp_cache_flush()
后,瞬态返回正确的数据。因此,解决方案是在使用瞬态值之前从缓存中排除瞬态/重新验证该瞬态的缓存。