我想实现一个php服务,其中涉及2个C#应用程序,每个应用程序读取其先前应用程序的输出并生成另一个输出。我想知道这是否可以逐行实现,而不是需要线程或其他异步机制。
用户可以在this webpage上传文本文件,该文件文件通向uploadFile.php
,目前的文字如下:
<?php
copy($_FILES["file"]["tmp_name"], "uploads/" . $_FILES["file"]["name"]);
$n1 = "uploads/" . $_FILES["file"]["name"];
echo "Uploaded: " . $n1 . "<br>";
exec("mono c1.exe $n1");
echo "After running c1.exe";
$n2 ="uploads/c1_" . $_FILES["file"]["name"];
exec("mono c2.exe $n2");
echo "After running c2.exe";
?>
假设用户在网页中上传test.txt
,c1.exe
使用test.txt
的内容并生成c1_test.txt
,然后c2.exe
使用c1_test.txt
的内容1}}并生成c2_test.txt
。
我的测试(仅由1位用户)显示当前uploadFile.php
可以逐步执行此任务。
但我不知道这是否是许多用户可以推出的网络服务的正确实现。
有人可以帮忙吗?
编辑1:如果可以遵守执行顺序,另一个问题是用户是否必须等到他之前用户的所有任务完成?在c1.exe
或c2.exe
需要几分钟才能运行的情况下,这种没有任何反馈的等待令人讨厌。
当前的方法是否允许多个用户同时运行他们的任务(但每个用户的顺序良好)?否则,我是否必须自己实现多线程?
答案 0 :(得分:0)
您可以使用uniqueid:
<?php
$name = uniqid();
copy($_FILES["file"]["tmp_name"], "uploads/" . $name);
$n1 = "uploads/" . $name;
echo "Uploaded: " . $n1 . "<br>";
exec("mono c1.exe $n1");
echo "After running c1.exe";
$n2 ="uploads/c1_" . $name;
exec("mono c2.exe $n2");
echo "After running c2.exe";
?>