Получение статуса http GET-запросов при загрузке видео с использованием PUT-запроса - PullRequest
0 голосов
/ 18 января 2020

Вот мое требование. Я немного новичок в PHP Я принимаю видеофайлы на сервер, используя http PUT. Я поместил их в al oop с интервалом в 1 минуту, используя метод PHP file_get_contents. Я могу получить статус приема видеофайла с помощью http GET-запроса. Поэтому мне нужно постоянно отслеживать состояние во время приема видеофайлов.

1 1-й запрос PUT, затем начните получать статус, используя GET с 10-секундным интервалом,

Через 1 минуту

2.2-й запрос PUT запускается

Начать получать статус 2-й файл и продолжайте получать статус 1-го файла до завершения изменения статуса

введите код. Вот мое требование. Я немного новичок в PHP Я принимаю видеофайлы на сервер, используя http PUT , Я поместил их в al oop с интервалом в 1 минуту, используя метод PHP file_get_contents. Я могу получить статус загрузки (загрузки) видеофайла с помощью запроса HTTP GET. Поэтому мне нужно постоянно отслеживать состояние во время приема видеофайлов. .

1 1-й запрос PUT, затем начало получения статуса 1-го файла с использованием GET с 10-секундным интервалом,

Через 1 минуту

2.2-й запрос PUT Начинается

Начать получать статус 2-го файла и продолжать получать статус 1-го файла, пока не будет изменено состояние

Вот мой код

<?php


//include time;

$fp = fopen('ingesttest1.csv', 'wb');


$dir = '/home/mit/NSK/XML/';


function GetReply($urln,$bodyn) {

    $opts2 = array('http'=>array('method'=>"GET",'timeout' => 30, 'content' => $bodyn));
    $context2 = stream_context_create($opts2);
    $categoryResOrg2 = @file_get_contents($urln, false, $context2); // send
    $response = simplexml_load_string($categoryResOrg2);
    $state= $response->ContentDetail->DeploymentState;

    return $state;
}

if ($handle = opendir($dir)) {

    while (false !== ($entry = readdir($handle))) {

        if ($entry != "." && $entry != "..") {



            $filedirectory='/home/mit/NSK/XML/'.$entry.'';
            //  echo $filedirectory;

            //  $directry = ltrim($entry, '.xml');
            $directry= pathinfo($entry, PATHINFO_FILENAME);

            $res = simplexml_load_file($filedirectory);

            foreach ($res->Asset->Metadata->App_Data as $appdata){

                if ($appdata->attributes()->Name == "Run_Time"){
                    $Run_Time = $appdata->attributes()->Value;
                    $dt = new DateTime("1970-01-01 $Run_Time", new DateTimeZone('UTC'));
                    $seconds = (int)$dt->getTimestamp();

                }

            }




            $url='http://192.17.1.50:7010/Content/PeoVOD/'.$directry.'';
            $body='<?xml version="1.0" encoding="utf-8"?>
<Content xmlns="urn:test:1.0">
<Popularity>3</Popularity>
<DurationInSec>'.$seconds.'</DurationInSec>
<Source>ftp://slt:123@172.17.225.120/Archive/VOD/'.$directry.'/</Source>
<ProfileName>MP4S</ProfileName>
</Content>';



            $opts = array('http'=>array('method'=>"PUT",'timeout' => 30, 'content' => $body)); // seachange request preparation

            $context = stream_context_create($opts);
            $categoryResOrg = @file_get_contents($url, false, $context); // send request and get response [ json format]




            sleep(2);




            $state =  GetReply($url,$body);


            $timeout = time() + 60*5;

            while($state!='eDeploymentStateFinishedFullyDeployed'){

                if($state=='eDeploymentStateFinishedFullyDeployed' || time() > $timeout){

                    break;
                }

                $state =  GetReply($url,$body);

                echo $state;
                echo $directry." is ".$state;

                sleep(5);

                $data = array($directry,$state);
                fputcsv($fp, $data);


            }






            echo ''.$directry.' completed<br>';


        }


    }

}




?>
...