2015年1月 7日 18:08
category: Web
---
文字数:1470
読む目安: 3分

Movable Typeで17万件のスパムコメントを一括削除した話

あけましておめでとん。
今年もよろしくお願いします。

2015年最初のブログ記事。
今年の抱負とかー...、目標とかー...、書くべきことってありそうですよね。
それはまた落ち着いたらってことで(笑)

新年早々、涙そうそう。

Movable Typeのお悩み相談をお寄せいただきました。
コメントが174,693件もあるんだけどそれがほとんど全てスパムコメントで...それを簡単に削除したい!と。

 

( ゚д゚) ...

(つд⊂)ゴシゴシ

( ; ゚д゚)...イチジュウヒャクセンマン...

(つд⊂)ゴシゴシ

( ; ゚д゚)...174,693件...(滝汗)

 

こりゃ大変だ。
というわけでこれをサクッと削除してみました。

こちらが作業前の状態(記念キャプチャ)

20150107171934.png

※バージョンが低いことは突っ込まないでください。

 

<phpMyAdminから一括削除>

ご存知のとおり、MTでは管理画面上からコメントを削除することができます。
ただ、一度に表示できるコメントの数が25件〜200件ほどなので、一つ一つ削除するのが大変な場合があります。

ちなみに174,693件を削除する場合、200件ずつ削除するとしても870回以上も同じ操作をしなければならず...、残念ながらワタシにはそこまでの根性はありませんでした(笑)

そこで今回は、phpMyAdminでデータベースにアクセスして、直接削除を試みます。
なお、「データベースにMySQLを利用している/削除対象のコメントが保留状態になっている(承認制にしてた)」ことが前提となっていますのでご留意ください。

Movable Typeのコメントは「mt_comment」というテーブルに格納されているので、phpMyAdminで以下のSQLを実行します。

delete from mt_comment where comment_visible = 0

上記は「mt_commentというテーブルの中にあるcomment_visibleの値が "0" (保留)のものを削除する」というSQLです。

ちなみに、このcomment_visible = 0 の部分をケース・バイ・ケースで変えると色々とできそうです。
参考:MovableType のスパムコメント、トラックバックを一括削除

実行した直後の表示がこちら↓

20150107174539.png

さすがに17万件...少し時間がかかりましたが、特に問題なく削除完了です。

あらためてMT管理画面にアクセスすると、上手く行っていました!

20150107174640.png

ちょっと数字があわないところありますが、保留だったけど削除しちゃだめなやつとかが幾つかあって。
お見せできないですが、1,525件は残しておいて良いコメントだと確認できているので問題ナシです!

最後にデータベース内でオーバーヘッドが溜まっていたので、各テーブルを最適化して作業完了です。
参考:phpMyAdminを使って、MySQLデータベースのオーバーヘッドを最適化 - WordPress

ちなみにMySQLのバックアップも取ったのですが、この作業前は約400MBだった容量が、作業後は約3MBまで減りました。
な、なんということでしょう...

 

と言う感じでなんとかミッションコンプリート。
さすがに17万件はコメント溜めすぎだと思うので、時々はチェックしましょうね(^^;

なお、今回ご紹介した方法はphpMyAdminの操作をともないますので、あくまで自己責任のもと、バックアップをきちんと取ってからお試しくださいね!