[WordPress]Warning: fopen(wp-cron.php?doing_wp_cron)

WordPress 3.0 で投稿すると、下のような警告メッセージが表示されるのに気づく。

Warning: fopen(http://HOST/wp/wp-cron.php?doing_wp_cron) [function.fopen]: failed to open stream: HTTP request failed! in /var/www/wp/wp-includes/class-http.php on line 1045
Warning: Cannot modify header information - headers already sent by (output started at /var/www/wp/wp-includes/class-http.php:1045) in /var/www/wp/wp-includes/functions.php on line 830
Warning: Cannot modify header information - headers already sent by (output started at /var/www/wp/wp-includes/class-http.php:1045) in /var/www/wp/wp-includes/functions.php on line 831

調べてみると、オフィシャルの次のチケットに上がっていた。

Ticket #11831 Warning when wp-cron fails

まとめると、次のような内容になる。

■WP_DEBUGフラグ
warning のもとになっているのは wp-includes/class-http.php の次の箇所で、 WP_DEBUG フラグが真の場合のみ発生。

1042     if ( !WP_DEBUG )
1043       $handle = @fopen($url, 'r', false, $context);
1044     else
1045       $handle = fopen($url, 'r', false, $context);

■wp-cron.php
wp-cron.php へリクエストを送った後、レスポンスが返ってくる前にタイムアウトし、そのまま、ページのロード処理がはしり、問題の警告メッセージが表示されている。
タイムアウトは wp-includes/cron.php で 0.01 秒に設定されている。

233     $cron_url = get_option( 'siteurl' ) . '/wp-cron.php?doing_wp_cron';
234     wp_remote_post( $cron_url, array('timeout' => 0.01, 'blocking' => false,     'sslverify' => apply_filters('https_local_ssl_verify', true)) );

■類似バグ報告
類似のバグ報告がすでにある。
Ticket #8923 : cron timeout is too short

■根本原因

タイムアウトを長くすれば、警告メッセージはつぶせるが、それでは根本解決にならない。
#8923 でなぜタイムアウトが短いのか次のように説明されている。

The timeout does not matter. This is just sending the request to cause the wp-cron to execute on the server.
We don’t care what the results are, it’s just making it start running.
Marking as invalid, because raising that timeout does nothing.

タイムアウト時間を伸ばして fix とする安直な解決策はとられておらず、”defect (bug)” のまま、BTS に居座り続けている。

Advertisements
Tagged with: , , ,
Posted in PHP, web

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Archives
  • RT @__apf__: How to write a research paper: a guide for software engineers & practitioners. docs.google.com/presentation/d… /cc @inwyrd 4 months ago
  • RT @HayatoChiba: 昔、自然と対話しながら数学に打ち込んだら何かを悟れるのではと思いたち、専門書1つだけ持ってパワースポットで名高い奈良の山奥に1週間籠ったことがある。しかし泊まった民宿にドカベンが全巻揃っていたため、水島新司と対話しただけで1週間過ぎた。 それ… 5 months ago
  • RT @googlecloud: Ever wonder what underwater fiber optic internet cables look like? Look no further than this deep dive w/ @NatAndLo: https… 5 months ago
  • @ijin UTC+01:00 な時間帯で生活しています、、、 10 months ago
  • RT @mattcutts: Google's world-class Site Reliability Engineering team wrote a new book: amazon.com/Site-Reliabili… It's about managing produc… 1 year ago
%d bloggers like this: