* PKWK_UPDATE_EXECに定義したコマンドが実行されない [#xee7c5a5]

- ページ: [[BugTrack2]]
- 投稿者: [[winはダメかね]]
- 優先順位: 低
- 状態: 着手
- カテゴリー: 本体バグ
- 投稿日: 2010-02-01 (月) 00:22:58
- バージョン: 1.4.7

** メッセージ [#y8c8b6d3]
使用環境
-Windows Vista SP2
-Apache 2.2.14
-PHP 5.2.12

1.4.7から「グローバル変数($update_exec)ではなく定数(PKWK_UPDATE_EXEC) を使用します。」とあったので、サンプルを手本にmknmzを定義したのですが、いつまで待っても[[Namazu]]のインデックスが更新されません。
不思議に思い仕組みを追うと、lib/file.phpでUNIX固有のコーディングがされていました。

         // Command execution per update
         if (defined('PKWK_UPDATE_EXEC') && PKWK_UPDATE_EXEC)
             system(PKWK_UPDATE_EXEC . ' > /dev/null &');

"> /dev/null"は不当メッセージの削除とsystem()の戻り高速化、"&"はバックグラウンド実行による戻り高速化として追加しているのだと思います。
ただ、Windowsには基本的に/devディレクトリはないので、この部分がエラーになって、PKWK_UPDATE_EXECが実行されないようです。~
で、お願いなのですが、/dev/nullがないようなプラットフォームでは、次のような感じでコマンドの出力を捨てるように、どこかのタイミングで変更して頂けると幸いです。
(バックグラウンド実行の共通化は難しそうなので、利用者がガンバレの方向で...)

''lib/file.php''
         // Command execution per update
         if (defined('PKWK_UPDATE_EXEC') && PKWK_UPDATE_EXEC) {
             if(!strcmp(filetype('/dev/null'),'char'))
                 system(PKWK_UPDATE_EXEC . ' > /dev/null &');
             else
                 exec(PKWK_UPDATE_EXEC);
         }
-- 注意:/manual/ja/function.system.php
>プログラムがこの関数で始まる場合、 バックグラウンドで処理を続けさせるには、 プログラムの出力をファイルや別の出力ストリームにリダイレクトする必要があります。 そうしないと、プログラムが実行を終えるまで PHP はハングしてしまいます。

--------
- 関連: [[official:質問箱4/555]], [[official:PukiWiki/Namazu]] --  &new{2011-01-02 (日) 10:47:24};

//#comment

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Site admin: PukiWiki Development Team

PukiWiki 1.5.4+ © 2001-2022 PukiWiki Development Team. Powered by PHP 8.2.12. HTML convert time: 0.091 sec.

SourceForge