-1

フォームのフィールドを取得して3つの交互のプログラム呼び出しを行うPHPスクリプトがあります。最初の呼び出しは、2番目の出力です。

問題は、各プログラム呼び出しの進行状況を表示する必要があることです。複雑なことは何もありません。3つの異なるメッセージを表示するのが好きです。

  • システムコールNが待機中です。
  • 実行中のシステムコールN。
  • システムコールNが終了しました。

exec()、popen()、proc_open()などのさまざまなPHP関数を使用してこれを実行しようとしていますが、これらの関数を使用すると、ブラウザーは各呼び出しが終了するまで待機します。システムコール全体は5分以上、おそらく3分または4分かかることはないので、各呼び出しにタイマーを配置することもできます。おそらく1.5分です。それ以上かかる場合は、現在のコールを強制終了します。システムコールの場合は、次の呼び出しをスキップしてエラーメッセージを表示します。

何か考えはありますか?たぶん、ajaxとjavascriptの組み合わせが解決策になる可能性があります。前もって感謝します。

<?php
/*
  System Calls
  This file is required in another main script
  $projectPath and $projectName defined in the main script
*/

//$mainHome = getcwd();

$home = $projectPath . $projectName;
$temp = $home . "/temp/";
$calls = $temp . "CALLS";

$threads = array();

if(is_dir($temp)){
    //chdir($temp);
    $FILE = fopen($calls, "r");
    while(($call = fgetcsv($FILE)) !== FALSE) {
        //print_r($call);
        $threads[] = implode(" ", $call);
    }
}

//print_r($threads);

$descriptorspec = array(0 => array("pipe","r"),
                        1 => array("pipe","w"),
                        2 => array("file","./phpError.log","a")
);

for ($a=0; $a<count($threads); $a++) {
    print $threads[$a] . "<br/><br/>";
    exec($threads[$a])
    //$res = proc_open($threads[$a], $descriptorspec, $pipes, $temp);
}

//chdir($mainHome);

?>

4

1 に答える 1

0

どうもありがとうございました!最後に、Python CGI ベースのソリューションを開発しました。これは、思っていたよりも少し静的ですが、チームの期待を満たしています。

ご挨拶

于 2012-10-10T20:51:56.860 に答える