0

大規模な Wordpress サイト (10,000 件以上の投稿) を所有しており、その投稿からすべてのアウトバウンド リンクとアンカー テキストを削除したいと考えています。

投稿ごとに正規表現検索と置換を行うコードを作成できました。しかし、私は非常に多くの投稿を行っているため、このスクリプトは事実上役に立ちません (共有サーバーでのメモリと実行時間の問題)。

メモリの消費量を最小限に抑えながら、データベースで正規表現の検索と置換を行う最良の方法は何ですか? mysql を介して正規表現の検索と置換を行うことはできますか?

また、これが「mysite.com」を含むものを除くすべてのリンク (内部リンクを除く) に一致する正規表現であることを確認できますか?

(<a.*>)(?!mysite\.com)(.*)(<\/a>)
4

1 に答える 1

1

同じ状況に直面した場合、データをバッチで処理するスクリプトを作成します。これにより、スクリプトのパフォーマンスが向上し、レプリケーションを実行している場合は、ダウンストリームでレプリケーションの遅延が発生しないことが保証されます。

200 のバッチで作業を行い (読み取りクエリには OFFSET と LIMIT を使用)、2 ~ 5 秒間スリープしてから、次のバッチを処理することをお勧めします。

間違った応答をするとリンクが壊れてしまう可能性があるため、提供された正規表現については話しません。また、正規表現をテストできるいくつかのサンプル リンクを含む小さなテスト スクリプトを作成し、それをロックダウンしてメイン スクリプトに追加することもお勧めします。

于 2013-08-06T17:43:54.940 に答える