Вот мое требование. Я немного новичок в 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>';
}
}
}
?>