2013-02-04 41 views
0

我正在嘗試編寫一些PHP,它通過抓取每個子目錄名稱並將其分配給變量的文件夾運行。然後,打開一個包含該變量的URL。PHP - 遞歸 - 使用從子目錄名稱創建的變量打開URL

例如,D:Folder中包含一些名爲1 - ??的子文件夾。

PHP將首先打開www.url.com/run_batch.php?q=1並休眠30秒,然後www.url.com/run_batch.php?q=2等...對於每個子主目錄中的目錄。

我目前正在試圖寫這個。我沒有太多的代碼,但認爲你們中的一位天才可以幫助我加速這個過程。

修訂

好吧,這裏是我迄今爲止,它運行沒有任何錯誤,但它似乎可以不睡同時運行所有的人?不確定,頁面只是保持忙碌狀態。

<?php 
if ($handle = opendir('D:\HTTP\pic\')) { 
$blacklist = array('.', '..', 'bu'); 
while (false !== ($file = readdir($handle))) { 
    if (!in_array($file, $blacklist)) { 
    echo "<iframe width='800' height='600' src='http://www.url.com/run_batch.php?q=" . "$file" . "'></iframe>"; 
     sleep(100); 
    } 
} 
closedir($handle); 
} 
?> 

回答

0

當您在PHP代碼睡眠時,不支持HTML代碼發送到瀏覽器,這就是爲什麼它看起來很忙。

您必須在每次通過時調用flush()。

<?php 
if ($handle = opendir('D:\HTTP\pic\')) { 
$blacklist = array('.', '..', 'bu'); 
while (false !== ($file = readdir($handle))) { 
    if (!in_array($file, $blacklist)) { 
    echo "<iframe width='800' height='600' src='http://www.url.com/run_batch.php?q=" . "$file" . "'></iframe>"; 
     //Send content to browser 
     flush(); 
     sleep(100); 
    } 
} 
closedir($handle); 
} 
?> 
+0

感謝您的幫助,我現在可以看到它,但是它爲數組中的每個項目打開了一個新的iframe,在閱讀代碼時我很有意義。我將如何使它爲每個人使用相同的iframe ...? – Will

+0

所以你必須修改你的概念。 PHP一次發送所有內容,但是您希望PHP自動刷新頁面。這是不可能的。我認爲你的html需要通過javascript調用php腳本,並查詢下一個目錄。 如果我仔細看看你的代碼,你想要定期運行批處理,那麼批處理是否必須在瀏覽器中顯示?爲什麼你需要分批之間的睡眠? 如果你問自己合適的問題,你會找到合適的解決方案。 – djleop

0

我建議你從僞代碼開始;爲這些步驟創建註釋。從那裏,看看PHP.net的具體任務的幫助。當你有一些可行的,但錯誤的時候,粘貼你的代碼。

僞代碼:

// get directory list 
// loop through directories 
// ... 
// redirect to next page