2011-05-03 22 views

回答

6

基本上,你這樣做是正確

while (!file_exists($filename)) sleep(1); 
print '<a href="'.$filename.'">download PDF</a>'; 

的睡眠給了兩次檢查之間的1秒鐘,這樣如果你需要發送回瀏覽器也不會強調你白白

3

這將完成這項工作,但您可以指定一個額外的超時時間。

while(!file_exists($pathToFile)) 
{ 
    sleep(1); 
} 
1

CPU ,你應該調查一下使用setInterval計時器的AJAX調用和檢查文件是否存在的PHP腳本。您可以通過兩種方式來實現:

  1. flush() HTML回包括javascipt的啓動使用AJAX的瀏覽器投票端輪詢過程中的瀏覽器,你的PHP腳本的AJAX功能來處理投票。

  2. 如果flush()不起作用,那麼您應該返回您的PHP腳本的HTML,然後再啓動Java進程。在該代碼中放入兩個AJAX調用。一個啓動實際的Java進程,一個啓動輪詢服務來查找文件。

長期運行的腳本可能會超時的瀏覽器之前,你可以從你的Java應用程序,這就是爲什麼你可能需要瀏覽器從您的Java進程異步工作的響應。

在另一方面,如果這是一個純粹的PHP腳本運行或Java過程不到一個典型的瀏覽器超時,你可以使用類似:

$nofileexists = true; 
while($nofilexists) { // loop until your file is there 
    $nofileexists = checkFileExists(); //check to see if your file is there 
    sleep(5); //sleeps for X seconds, in this case 5 before running the loop again 
} 

你沒有,如果這提將是一個高流量的呼叫(對於大量的公共用戶)或報告類型的應用程序。如果流量高,我會推薦AJAX路由,但是如果流量很低,那麼上面的代碼。

相關問題