デフォルトで有効になっているMySQLクエリキャッシュがありますか。私はユーザーインポートスクリプトで作業しようとしています、そして私はusername_exists
テーブルからレコードを削除した後に私はwp_users
関数からいくつかの奇妙な結果を見ています。 username_exists
を呼び出したときにレコードを削除した後、Wordpressはfalse
ではなく削除されたユーザーのIDを返しています。奇数何が足りないの?
デフォルトでは、WordPressはデータベースへの旅行を節約するために $wp_object_cache
のインスタンスであるWP_Object_Cache
を使用します。
username_exists()
関数をたどると、 get_user_by()
が WP_User::get_data_by()
を使用していることがわかります。そのユーザがデータベースに存在するかどうかをチェックせずに、すぐに$wp_object_cache
からのユーザデータ。 $wp_object_cache
はメモリに格納されています。
つまり、ユーザーキャッシュをクリーンアップせずにデータベース内のユーザーレコードを直接削除した場合でも、ユーザーデータは利用可能です。それが問題です。
それであなたは何が足りないのですか?
正しい方法でユーザーを削除しない。
クリーンユーザーキャッシュ がありません。
Mysqlコンポーネント側のリクエストキャッシング(この場合には影響がない可能性があります)から始めて、キャッシングはどこでも構いません。また、ワードプレス側のオブジェクトキャッシングも可能です。
おそらくあなたのコードで何か間違ったことをしているのでしょうが、それを削除するためにAPI(あるいはそれへのフロントエンドとしてwordpressの管理者)を使うことは常にDBに直接アクセスすることによってそれらを削除することを試みます。問題となる可能性があるのはキャッシュだけではなく、ユーザーメタやその他の構成設定も考慮に入れないことです。