フォームのフィールドを取得して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);
?>