バッチ処理という処理方法を聞いたことがあるでしょうか?
今回はそのバッチ処理をWordPressで実装するための方法を2回にわたって掲載します。
バッチ処理とは?
英語で書くとBatch、一連・一括で~といった意味合いがある単語になり、
要はたくさんの処理を一括で処理するような処理方法のことをバッチ処理、と称します。
これはWebシステムなどでもよく利用されている方法で、
例えば1日1回登録されているすべてのユーザーにメールを送る処理だったり、
夜の間に前日のログファイルを分析してシステムの異常を解析したり、長時間や高負荷の処理に利用されます。
WordPressでは標準でバッチ処理を行うような仕組みは存在しないので、
大きな負荷のかかるような処理は基本的にWordPressの管理画面上などから実施するように書く必要があります。
ブラウザなどからの実行の場合、通常は処理の限度となる時間が設定されてしまっているため、
例えば600秒以上の処理は強制的に「タイムアウト」といった状態で停止されてしまい、
長時間の作業などを行うことができません。
これは処理が終わらないような不具合があったときに、サーバーを守るための防御機構ですが、
大量のデータを取り扱うような処理を実装しようとしたときには足かせになります。
そこで利用するのが、WordPressをコマンドラインから実行することができるWP-CLIとなります。
コマンドラインのメリット・デメリット
コマンドラインの環境においては処理のタイムアウトという制約から解放されるため、
非常に長時間の処理だったとしてもエラーで停止するなどしない限り、
確実に最後まで処理を実施してくれます。
またCrontab(Cronジョブ)といった定期実行の処理と組み合わせることもできますので、
決められた時間に決められた内容を、必ず最後まで実施する必要があるといった処理に最適です。
最初に説明したバッチ処理のような仕組みを構築するためには、
基本的にこのコマンドラインから実施するという方法を取ることが基本となります。
知っていれば非常に便利で複雑なことができるコマンドラインですが、
一番のデメリットはやはり真っ黒な画面で数多あるコマンドを打たないと処理が実施できないという、
「わかりづらい」「とっつきづらい」という要素です。
ある程度作業をこなしてみて、こればかりは慣れるしかないかもしれません。
WP-CLIを導入してみる
早速WP-CLIを導入してみましょう。
いったん環境としてはLinux、Macを基本としています。
WP-CLIをダウンロードする
公式サイトに記載されているコマンドを利用して手元にWP-CLIの本体をダウンロードします。
curl -O <https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar>
カレントディレクトリに wp-cli.phar
というファイルが保存されるはずです。
パスが通っている場所にファイルを移動する
wp-cli.phar
という名称では利用しづらいため、
パスが通っている場所にファイルを移動させつつ実行権限を付与しましょう。
以下では /usr/local/bin/
に移動していますが、
パスの通っているディレクトリであればどちらに移動させても大丈夫です。
chmod +x wp-cli.phar
sudo mv wp-cli.phar /usr/local/bin/wp
実際に動作するかテストする
上記手順まで実施したうえで、以下のコマンドを試してみましょう。
wp --info
以下のようなログが出力されたらインストール完了です!
$ wp --info
OS: Linux 5.10.60.1-microsoft-standard-WSL2 #1 SMP Wed Aug 25 23:20:18 UTC 2021 x86_64
Shell: /usr/bin/zsh
PHP binary: /usr/bin/php8.1
PHP version: 8.1.0
php.ini used: /etc/php/8.1/cli/php.ini
MySQL binary: /usr/bin/mysql
MySQL version: mysql Ver 8.0.27-0ubuntu0.20.04.1 for Linux on x86_64 ((Ubuntu))
SQL modes:
WP-CLI root dir: /home/wp-cli/
WP-CLI vendor dir: /home/wp-cli/vendor
WP_CLI phar path:
WP-CLI packages dir: /home/wp-cli/.wp-cli/packages/
WP-CLI global config:
WP-CLI project config: /home/wp-cli/wp-cli.yml
WP-CLI version: 2.6.0
もしログが出力されたなかったりコマンドエラーが出てしまう場合、
正しくパスが通ったディレクトリに wp-cli.phar を移動させたか、
実行権限を付与したかを確認してみましょう。
利用できるコマンド
以下の公式サイトに、wp-cliで利用できるコマンドがすべて掲載されています。
基本的な利用方法はいたって簡単で、
WordPressのインストールされているディレクトリに移動してそれぞれのコマンドを実行します。
cd /var/www/html/wp # wp以下にWordPressがインストールされている場合
wp {command}
非常に便利なコマンドで現場でもよく利用するのが wp db export
というコマンドで、
現在のWordPressのデータベースを一発でファイルにバックアップしてくれるコマンドです。
プラグインなどを利用しなくても簡単にデータベースをバックアップできるので、
大きな作業を実施する前のバックアップやCrontabと組み合わせたデイリーのバックアップなどに最適です。
おわりに
以上でWP-CLIの導入が完了しました。
バッチ処理を実施するために導入したWP-CLIですが上記のバックアップ用のコマンドであったり、
データベース内を任意の文字で検索できるコマンド、
プラグインをCLIから導入するコマンドなど非常に便利なコマンドがたくさん備わっていますので、
興味があれば公式サイトなどをいろいろ読んでみるとよいかもしれません。
次回、このWP-CLIを使ったバッチ処理の開発方法について解説していきたいとおもいます。