在刷新浏览器之前,localhost 中的应用程序的结果是挂起的
The result of an application in localhost is pending until refresh the browser
希望我能说清楚我的问题。
我在我的本地主机上开发了一个应用程序,其中 HTML 文件用于接口,javascript、PHP、Perl 文件用于功能。
界面上有一个按钮,应该将用户输入提交给其他文件,然后显示结果。
当我点击那个按钮时,很长一段时间后才生成结果。我现在发现,当我点击那个按钮然后刷新页面时,结果就生成了!
看来结果悬而未决了。
此外,当我单击该按钮并在浏览器中打开另一个选项卡并打开另一个本地主机应用程序时,尽管这两个应用程序不同,但仍会生成结果。
HTML:
<input type='button' value='search' onclick="jsFunction(document.getElementsByName('x1')[0].value,document.getElementById('x2').options[document.getElementById('x2').selectedIndex].value);">
JAVASCRIPT:
function jsFunction(x1,x2)
{
var url = "file.php";
var params = "x1="+x1+"&x2="+x2;
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function()
{
if (xhttp.readyState == 4 && xhttp.status == 200)
document.getElementById("result").innerHTML = xhttp.responseText;
}
xhttp.open("POST", url, true);
xhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
xhttp.send(params);
}
file.php:
$x1= (empty($_POST['x1'])) ? '' : $_POST['x1'];
$x2= (empty($_POST['x2'])) ? '' : $_POST['x2'];
echo "This echo before perl statement ";
pclose(popen("start /b perl file.pl \"$x1\" \"$x2\"", "r"));
echo "This echo after perl statement";
显示以上两个回显
Perl file.pl: 调用 cmd 应用程序并在文件中生成结果
open LOG, ">$dataPath/$jobid.log";
open OUT1, ">$dataPath/$jobid.string.txt";
open OUT2, ">$dataPath/$jobid.result.txt";
以上perl结果是我刷新浏览器后才生成的,或者生成时间比较长
非常感谢任何澄清或帮助。
谢谢
start /b perl file.pl "$x1" "$x2"
命令将return perl 进程立即启动。它不会等待它完成
要同时等待 perl 进程完成,您需要使用
start /b /wait perl file.pl "$x1" "$x2"
但是,您的所有 Perl 代码似乎只是创建三个磁盘文件然后退出
希望我能说清楚我的问题。 我在我的本地主机上开发了一个应用程序,其中 HTML 文件用于接口,javascript、PHP、Perl 文件用于功能。 界面上有一个按钮,应该将用户输入提交给其他文件,然后显示结果。 当我点击那个按钮时,很长一段时间后才生成结果。我现在发现,当我点击那个按钮然后刷新页面时,结果就生成了! 看来结果悬而未决了。 此外,当我单击该按钮并在浏览器中打开另一个选项卡并打开另一个本地主机应用程序时,尽管这两个应用程序不同,但仍会生成结果。
HTML:
<input type='button' value='search' onclick="jsFunction(document.getElementsByName('x1')[0].value,document.getElementById('x2').options[document.getElementById('x2').selectedIndex].value);">
JAVASCRIPT:
function jsFunction(x1,x2)
{
var url = "file.php";
var params = "x1="+x1+"&x2="+x2;
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function()
{
if (xhttp.readyState == 4 && xhttp.status == 200)
document.getElementById("result").innerHTML = xhttp.responseText;
}
xhttp.open("POST", url, true);
xhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
xhttp.send(params);
}
file.php:
$x1= (empty($_POST['x1'])) ? '' : $_POST['x1'];
$x2= (empty($_POST['x2'])) ? '' : $_POST['x2'];
echo "This echo before perl statement ";
pclose(popen("start /b perl file.pl \"$x1\" \"$x2\"", "r"));
echo "This echo after perl statement";
显示以上两个回显
Perl file.pl: 调用 cmd 应用程序并在文件中生成结果
open LOG, ">$dataPath/$jobid.log";
open OUT1, ">$dataPath/$jobid.string.txt";
open OUT2, ">$dataPath/$jobid.result.txt";
以上perl结果是我刷新浏览器后才生成的,或者生成时间比较长
非常感谢任何澄清或帮助。 谢谢
start /b perl file.pl "$x1" "$x2"
命令将return perl 进程立即启动。它不会等待它完成
要同时等待 perl 进程完成,您需要使用
start /b /wait perl file.pl "$x1" "$x2"
但是,您的所有 Perl 代码似乎只是创建三个磁盘文件然后退出