检查文件传输的后台脚本

时间:2015-08-26 20:46:56

标签: php batch-file background-process file-transfer

我必须编写一个脚本来检查后台批处理正在执行的文件传输的进度。我知道该文件夹需要具有“完整”状态的文件数。我在后台PHP中尝试以下内容:

$id = $_GET['id'];
$qtd = $_GET['qtd'];

checkProgress($id, $qtd);

function checkProgress($qtd, $id) {
    $dirWav = "D:\\path\\to\\wav\\".$id."\\";
    $dirMP3 = "D:\\path\\to\\mp3\\".$id."\\";

    $progWav = array_diff( scandir($dirWav), array(".", "..") );
    $progMP3 = array_diff( scandir($dirMP3), array(".", "..") );

    $numWav = count($progWav);
    $numMP3 = count($progMP3);

    if ($numMP3 < $qtd OR $numWav < $qtd) {
        sleep(5);
        checkProgress($qtd, $id); //Here i'm trying to do it in a recursive way
    } else {
        //End script, record to the DB
    }
}

我确定启动时检查的beign文件夹是空的,并且批处理运行完美无缺。但是在脚本开始时,它会自动结束(我使用mkdir以懒惰的方式检查它)。

我怎样才能实现我想要的目标?我不能通过cronjob或类似的东西检查它。

1 个答案:

答案 0 :(得分:0)

这是Powershell,但我猜测整体功能将适用于批处理文件。将输入作为两个路径,运行FOR循环来计算文件并进行比较。有关计算FOR循环中的文件的信息,请参阅here

Function Count-Folders{
Param
 (
  [parameter(Mandatory=$true,Position=1)][string]$source,
  [parameter(Mandatory=$true,Position=2)][string]$dest
)

$path = @(gci -Path $source -dir)
$path2 = @(gci -Path $dest -dir)

If($path.Length -eq $path2.Length){
 "Matches"
} Else{
"input folder counts do not match, check again!!!"
}