2013-02-04 23 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