У меня есть функция, которая выглядит как:PHPUnit - Глумление Transfer Object Класс жрать/S3 с обетованием методы
public function downloadProjectFolder($projectId, $taskToken){
// Download the project directory if it isn't on the server
if(is_dir('/path/to/folder/') === false){
$manager = $this->instantiateS3TransferObject($projectId, $taskToken);
$promise = $manager->promise();
$promise->wait();
}
else{
return 'Project Folder Already Exists';
}
}
Вышеописанный способ загрузки папку на моем сервере из AWS S3, если он уже не существует на локальной машине. Реальный объект S3 Transfer (из библиотеки AWS PHP SDK V3 - что сам по себе, в основном, абстрагируются от жрать PHP) конкретизируются с помощью следующей функции:
private function instantiateS3TransferObject($projectId, $taskToken){
$lastDatetime = time();
return new \Aws\S3\Transfer($this->myS3ClientObject, 's3://mys3bucket/destination/url',
'/path/to/local/directory/', array(
'base_dir' => 'destination/url',
'before' => function()use($projectId, $taskToken, &$lastDatetime){
$currentDatetime = time();
if(($currentDatetime - $lastDatetime) >= 30){
$postParams = array(
'project_id' => $projectId,
'task_token' => $taskToken
);
$this->curl->post($postParams, 'http://url/endpoint');
$lastDatetime = $currentDatetime;
}
}
)
);
}
выше по существу начинается моя папка загрузки и натыкается на пользовательскую конечной точке каждые 30 секунд асинхронно.
Как бы я высмеивал объект \Aws\S3\Transfer
в этом случае, чтобы он включал метод promise()
при возврате, и этот метод в свою очередь возвращает метод wait()
?