我想實現一個涉及2個C#應用程序的php服務,每個應用程序讀取其以前的應用程序的輸出並生成另一個輸出。我想知道這是否可以逐行實現,而不是需要線程或其他異步機制。如何保證PHP函數調用的順序?
用戶可以上傳在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
的內容並生成c2_test.txt
。
我的測試(只有1個用戶)顯示當前uploadFile.php
可以逐步執行此任務。
但我不知道這是否可以由許多用戶啓動的Web服務的正確實施。
任何人都可以幫忙嗎?
編輯1:如果可以遵守執行順序,另一個問題是用戶是否必須等到他以前的用戶的所有任務都完成了?在c1.exe
或c2.exe
需要幾分鐘才能運行的情況下,沒有任何反饋的等待是令人討厭的。
那麼目前的方法是否允許多個用戶同時運行他們的任務(但對每個用戶而言都是正確的)呢?否則,我是否必須自己實現多線程?
我看不出有任何問題與上面的方法。 – nogad
讓我們假設'c1.exe'需要5分鐘運行。如果另一個用戶在用戶之後上傳文件會發生什麼?那邊有一個「隊列」嗎? – SoftTimur
exec是阻塞的,除非你重定向輸出 – nogad