LoginSignup
0
0

More than 3 years have passed since last update.

WordPressで別サーバーへの移行作業中にwp-cronが動作しなかった件

Last updated at Posted at 2020-05-24

どうも、はにおかさいです。

トラブル内容

先日、WordPress 3.4.1のサイトを別のサーバーに移す作業をしていました。
サイトの移行だけしてドメインのAレコードは新サーバーに向けずにhosts書き換えで動作確認をしていたとき、新サーバーのBackWPupが動作しないことに気づきました。ヘルスチェックを見ると、

予約したイベント backwpup_cron の実行に失敗しました。

とか

「バックグランド更新が想定通りに動作していません」

と言われました。
自動バックアップが機能しないのはまずいと思ったので、原因を考えました。
旧サーバーでは動いていたので、なにか新サーバーでまずいことが起きてるなぁと...

原因

WordPressのサイトが読み込まれたとき、curlでhttpリクエストによってwp-cron.phpを実行していました。
つまり、WordPressは自分にアクセスできないとwp-cron.phpを呼んでWP Cronを動作させられないのです。
作業中はhostsでドメインにIPアドレスを宛がっていて、DNS上では古いサーバーを指していました。

    $cron_request = apply_filters(
        'cron_request',
        array(
            'url'  => add_query_arg( 'doing_wp_cron', $doing_wp_cron, site_url( 'wp-cron.php' ) ),
            'key'  => $doing_wp_cron,
            'args' => array(
                'timeout'   => 0.01,
                'blocking'  => false,
                /** This filter is documented in wp-includes/class-wp-http-streams.php */
                'sslverify' => apply_filters( 'https_local_ssl_verify', false ),
            ),
        ),
        $doing_wp_cron
    );

    $result = wp_remote_post( $cron_request['url'], $cron_request['args'] );
    return ! is_wp_error( $result );

たしかにwp cronを動かすためにcronでhttpリクエストしていることが読み取れますね。

解決法

ドメインからサーバーのIPアドレスが正引きできればよいので、ドメインのAレコードを問題の起きた新サーバーに向けれてWordPressが自分のWebサーバーにアクセスできれば良いのです。

参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0