2015-08-26 2 views
0

Мне нужно написать скрипт, который проверяет ход передачи файлов, который выполняется в фоновом режиме. Я знаю количество файлов, которые должна иметь папка, чтобы иметь «полный» статус. Я пытаюсь следующим в фоновом режиме 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 или что-то в этом роде.

ответ

0

Это Powershell, но я бы предположил, что общая функция будет применяться к пакетному файлу. Возьмите ввод как два пути, запустите цикл FOR, чтобы подсчитать файлы и сравнить. См. here для подсчета файлов в цикле FOR.

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!!!" 
} 
+0

Спасибо за вашу поддержку. Я попробую это сразу. –

Смежные вопросы