WordPress 2.9.2のWPクエリを使用して、「Apache HTTPサービスが機能しなくなりました」
質問
私のスクリプトがWP 2.9.2で下の4行目を実行すると、Webアプリが「Apache HTTPサービスが機能しなくなった」エラーをスローさせます。
$cat=get_cat_ID('top-menu');
$catHidden=get_cat_ID('hidden');
$myqueryCurrent = new WP_Query();
$myqueryCurrent->query(array('cat'=>"$cat,-$catHidden",'post__not_in'=>get_option('sticky_posts')));
WP 2.9.2と互換性のないその4行目に何かが見えますか?コードは、WP 3.0.4の下で同じサーバーで正常に実行されます
エラーの詳細は次のとおりです。
問題署名:問題イベント名:AppCrashアプリケーション名:httpd.exeアプリケーションバージョン:2.2.14.0アプリケーションタイムスタンプ:4AEB9704障害モジュール名:PHP5TS.DLL障害モジュールバージョン:5.3.1.0
解決
投稿したコードを実行すると、PHPモジュール内のクラッシュが発生します。モジュールがクラッシュすると、Apacheもクラッシュする場合、WindowsのApache内のモジュールとしてPHPを実行していると思います。
ここで適切なPHPモジュールを使用していることを確認してください。 ApacheのPHPのスレッドセーフバリアントが必要ですか?これらは、Windows IIRCで安定していないと報告されています。
したがって、これはWordPressバージョンではなく、サーバーの構成に関連している可能性があります。
この答えが物事に少し取り組むのに役立つことを願っています。
他のヒント
今この古いものを実現していますが、これはGoogleを介してこれを見つける人々に役立つかもしれません:
apacheが呼び出される関数内で同様のコードを実行しているときに死にかけているのに問題がありました pre_get_postsフック. 。問題は私が条件を逃したことでした:
$query->is_main_query()
つまり、それは主要なクエリだけでなく、すべてのクエリのために仕事をしていたことを意味します。それを追加して、私にとって問題を修正しました。私が使用する完全な条件付きは(その後、以下の他のコードです。
if ( ! is_category() || ! $query->is_main_query() || ! is_a( $query, 'WP_Query' ) )
return;