質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

Q&A

解決済

2回答

2593閲覧

wordpressを2台にスケールアウトして運用している中で、crontabを1台のみで実行したい

qaz3330

総合スコア113

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

0グッド

1クリップ

投稿2017/09/11 14:17

編集2017/09/11 14:17

WP管理画面の下記メニューからいけるWP-Cron Schedulesというのを用いて、Cron処理を実行しております。

設定 > Cron Schedules

これまでは、1台のWPだけでしたので、問題なかったのですが、負荷が大きくなったため、2台構成で運用しております。

そうなった際に、Cronが2回実行されるのではないかと危惧しております。

サーバー内には入れますので、片方のサーバーに入り、 $ crontab -l としたものの、
rootユーザーでcrontabの設定がしていないみたいで、かつ、WP配下のファイル所有者であったapacheユーザーに切り替えようとしたところ

$ sudo su - apatche su: user apatche does not exist

というエラーが発生します。

管理画面から片方のcronを止める形でも良いのですが、どちらのサーバーの方のCronを止めたのかがわからなくなるため、可能な限りは、サーバー側で、設定したいと思います。

また、こういった問題を自力で調べていきたいのですが、「wordpress 複数 xxx」 という感じで検索しても、マルチサイト機能の記事ばかりでて、上手いこと欲しい情報が手に入らず困っております。

宜しくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

unau

2017/09/11 14:34 編集

具体的にどういうマシン構成になっています。アプライアンスでロードバランシングしているとか、WEB サーバと PHP サーバを分けているとか、DNS によるラウンドロビンをしているとか、DB サーバは一台なのかとか。複数のサーバで共有のメモリやストレージはあるのか、とか。
unau

2017/09/11 14:34

あと、cron でやろうとしている作業はなんですか。
qaz3330

2017/09/11 14:55

AWS を使用しており、elastic load balancing というのを使っております。 EC2 を2台たてており、リクエスト毎に、各インスタンスに振り分けております。DBはRDS一台で、それぞれのEC2からこの一台を参照しております。
qaz3330

2017/09/11 14:58

また、cronでは、決済処理をしております。決済情報などは外部サービスを使っており、情報は外部に保存されているのですが、CRONを実施することで、決済処理を実行するようにロジックをくんでおります。2台以上にスケールアップすることを想定できておらリませんでした。
退会済みユーザー

退会済みユーザー

2017/09/11 21:52

お金の絡む話なら、ちゃんと検証環境作り、本番適用前に検証した方がいいですよ。AWS なら最小の課金で検証環境が用意できるし、決済プロバイダ側も sandbox の用意があると思います。
guest

回答2

0

ベストアンサー

WordPressのcronはサーバーのcronとは別物なのでコンソールで何をしても無意味です。

WP Crontrolというプラグインでwp-cronのスケジュールを可視化できるので不用なものは削除してください。
https://wordpress.org/plugins/wp-crontrol/

ただしWordPrssのコアに関わるスケジュールはその画面では止められないはずなので別途フィルターフックなんかをfunctions.phpに追加して無効化してください。

ん?
設定 > Cron Schedulesこれが何か分からなかったのですが、既にWP Crontrolを使ってますかね?
そうならばwp cronの一覧はツール→Cron Eventsです。

投稿2017/09/11 14:28

編集2017/09/11 14:55
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

qaz3330

2017/09/11 15:00

説明が不足しており、申し訳ありません。 ご指摘の通り、WP Crontrolのプラグインを入れております。
qaz3330

2017/09/11 15:02

> 別途フィルターフックなんかをfunctions.phpに追加して無効化 wordpressの経験が少なく質問ばかりで恐縮です。 functions.phpにはサーバーのIPなどを指定し、そのIPではcronを実行しないというようなことをかくかたちで宜しいでしょうか? 参考サイト等がもし御座いますととても助かります。
qaz3330

2017/09/11 15:05 編集

またご指摘頂いた、WP-Cron Events も見ております。 サイト上を見る限りでは、cronのjobは重複していなさそうですが、複数台サーバーが稼働している状態でも、このプラグインではCRONの実行は、サーバー数分実行ではなく、1回のみ実行されるのでしょうか?
退会済みユーザー

退会済みユーザー

2017/09/11 15:28

例えばサーバーが3台あったとして、それぞれWordPressが1つインストールされているとすると、wp cronはそれぞれのサーバーに存在しバラバラのタイミングで実行します。 wp cronはWordPressやプラグインのインストールまたは有効になったタイミングから開始するので、手動で時間を設定しない限り時間が重複することはまずありません。 で、どのスケジュールを無効にするかにもよりますが、例えばプラグインの更新チェックやゴミ箱の掃除、自動下書きの掃除なども無効にするのでしょうか?それによって行う作業は異なります。どのスケジュールを無効にしたいのか挙げてみてください。
qaz3330

2017/10/17 02:34

PHPのロジックを修正し、一度のみしか実行できないように実装しました。こちらにより、2度の実行を防ぐ機能にしました。
guest

0

apatche じゃなくて apache じゃないですかね〜

投稿2017/09/11 15:16

scsi

総合スコア2840

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問