Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Помогите разобрать с РHP файлом

6.6.6 Ученик (202), на голосовании 2 года назад
Здравствуйте мы работаем с компанией Бинотел но связи с войной на территорий украины их специалисты просят скопировать все записи звонков но проблема заключается в том что у них нету возможности скачивания массово файлов только штучное далее их специалисты прислали данное сообщение (скрип по массовой выгрузке вы сможете найти в папке /binotel-api-4.0.0-samples/API-REST/ready-to-use-scripts/)
Дополнен 2 года назад
Я не особо разбираюсь в веб разработки, если есть возможность объясните что нужно сделать по пунктам
Дополнен 2 года назад
<?php

/*
Скрипт для массового скачивания записей звонков.
Скачанные записи разговора будут в созданной директории: download-records-of-calls
*/

/*
ВНИМАНИЕ! В bootstrap.php - прописаны данные для авторизации и инициализация API библиотеки.
Пожалуйста ознакомьтесь с этим файлом.
*/
require_once(__DIR__ .'/../bootstrap.php');

$startDay = 20;
$startMonth = 12;
$startYear = 2014;

$stopDay = 24;
$stopMonth = 12;
$stopYear = 2014;

/*
Диапазон запроса по времени. Стандартное значение: 24 часов.
Если будет ошибка "Диапазон запроса по времени слишком большой", необходи его уменьшить на 30 процентов.
*/
$intervalofRequests = 24 * (60 * 60);

$requestStartTime = $startTime = mktime(0, 0, 0, $startMonth, $startDay, $startYear);
$stopTime = mktime(23, 59, 59, $stopMonth, $stopDay, $stopYear);

$listOfCallsForDownload = array();

while ($requestStartTime < $stopTime) {
$requestStopTime = (($requestStartTime + $intervalofRequests) < $stopTime ? $requestStartTime + $intervalofRequests : $stopTime);

$result = $api->sendRequest('stats/outgoing-calls-for-period', array(
'startTime' => $requestStartTime,
'stopTime' => $requestStopTime
));

if ($result['status'] === 'success') {
if (count($result['callDetails']) >= 2000) {
die(sprintf('Диапазон запроса по времени слишком большой. Вам нужно его уменьшить на 30 процентов. %s', PHP_EOL));
} else {
foreach ($result['callDetails'] as $callData) {
if ($callData['disposition'] === 'ANSWER') {
$listOfCallsForDownload[$callData['generalCallID']] = $callData;
}
}
}
} else {
Дополнен 2 года назад
printf('Что-то пошло не так! %s', PHP_EOL);
printf('REST API ошибка %s: %s %s', $result['code'], $result['message'], PHP_EOL);
exit;
}

sleep(10);

$result = $api->sendRequest('stats/incoming-calls-for-period', array(
'startTime' => $requestStartTime,
'stopTime' => $requestStopTime
));

if ($result['status'] === 'success') {
if (count($result['callDetails']) >= 2000) {
die(sprintf('Диапазон запроса по времени слишком большой. Вам нужно его уменьшить на 30 процентов. %s', PHP_EOL));
} else {
foreach ($result['callDetails'] as $callData) {
if ($callData['disposition'] === 'ANSWER') {
$listOfCallsForDownload[$callData['generalCallID']] = $callData;
}
}
}
} else {
printf('Что-то пошло не так! %s', PHP_EOL);
printf('REST API ошибка %s: %s %s', $result['code'], $result['message'], PHP_EOL);
exit;
}
Дополнен 2 года назад
sleep(10);

$requestStartTime = (($requestStartTime + $intervalofRequests) < $stopTime ? $requestStartTime + $intervalofRequests : $stopTime);
}

printf('Записей разговоров для скачивания: %s %s%s', count($listOfCallsForDownload), PHP_EOL, PHP_EOL);

if (count($listOfCallsForDownload)) {
foreach ($listOfCallsForDownload as $callData) {
$attempts = 0;

while (TRUE) {
$result = $api->sendRequest('stats/call-record', array(
'callID' => $callData['callID']
));

if ($result['status'] === 'success') {
$directoryForDownloads = __DIR__ . DIRECTORY_SEPARATOR .'records-of-calls'. DIRECTORY_SEPARATOR . date('Y-m', $callData['startTime']) . DIRECTORY_SEPARATOR;

if (!is_dir($directoryForDownloads)) {
mkdir($directoryForDownloads, 0777, TRUE);
}

$callRecordContent = file_get_contents($result['url']);
$callRecordFileName = date('d-m-Y_H-i', $callData['startTime']) .'_'. ($callData['callType'] === '0' ? $callData['externalNumber'] .'_incoming' : $callData['historyData'][0]['internalNumber'] .'_outgoing') .'.mp3';

file_put_contents($directoryForDownloads . $callRecordFileName, $callRecordContent);

break;
Дополнен 2 года назад
} else {
printf('Что-то пошло не так! %s', PHP_EOL);
printf('REST API ошибка %s: %s %s', $result['code'], $result['message'], PHP_EOL);

$attempts++;
sleep(5);

if ($attempts >= 10) {
exit;
}
}
}
}
}

printf('Все записи разговоров успешно скачаны! %s%s', PHP_EOL, PHP_EOL);
Голосование за лучший ответ
Sergey V. Voronin Искусственный Интеллект (292231) 2 года назад
Т. е. вы коммерческую работу хотите нашару сделать? Не уверен, что кто-то даром согласится. А что вам мешает их скопировать и выложить на файлообменник, а те сами скачают?
6.6.6Ученик (202) 2 года назад
1)Я не прошу сделать всю работу просто помогите разобраться по их словам тут все готово нужно просто сделать скелет из HTML и css но у меня не получается так как я не опытный новичок так сказать,
2)Как я понял по их рассказам что у них не один сервер а данные распределённый по серверам и нужно скачивать только по одному но есть мол скрипт готовый но скелет должный сами сделать. Вот я тут и пытаюсь с горе пополам
Аль Капоне Ученик (177) 2 года назад
сейчас как напишу в binotel.ua, и перехвачу эту работу за очень привлекательную цену)))
6.6.6Ученик (202) 2 года назад
Скрип находиться на общем доступе кто угодно может скачать скрип но без скелета он бесполезен
Аль Капоне Ученик (177) 6.6.6, я имел ввиду вашу работу, но я конечно же я пошутил, своей хватает...)
EVK IT Сервис К Мыслитель (5236) 2 года назад
Вам нужно на какой-то сайт фриланса. Здесь советом помогают, а не делают работу за вас
6.6.6Ученик (202) 2 года назад
Ну я и прошу мне подсказать помочь, мне сказали что скрип готовый нужно просто сделать скелет
Похожие вопросы