а я и слушаю или со своего сайта или локально если флак
<audio id="audio" src="/cloud/music/eb813e43168f0cfa4c9b07bf7e24f166/" controls"="" preload="auto" label="Breaking Benjamin - Without You"></audio>
получается вот такой адрес генерится для разметки
и далее уже работает логика cloud (пока импорта еще нет, по этому частично, но суть я думаю будет ясна)
<?php
/**
* Created by PhpStorm.
* User: ramzes
* Date: 07.11.2016
* Time: 23:40
*/
namespace microapp;
if(app::router()->query(0) AND app::router()->query(1)){
$file_id = app::str()->clear(app::router()->query(1));
switch (app::router()->query(0)){
case 'music':
$local = app::storage()->audioFile($file_id, true);
if($local){
header('Location: /'.$local);
exit;
}else{
// get request to storage server and redirect to response url
}
break;
case 'video':
break;
default:
header('HTTP/1.1 404 Not Found');
exit('404 Not Found [Error: 0.1]');
break;
}
}else{
header('HTTP/1.1 404 Not Found');
exit('404 Not Found');
}
Всю тему не читал, но готовые решения уже советовали?
reaper, это же форум вап-мастеров, о каких готовых решениях ты говоришь вообще?!
# reaper (11.11.2016 / 22:39)
Всю тему не читал, но готовые решения уже советовали?
Нет. Если только в познавательных целях.
Я быстрее допилю свое чем готовое освою))
Но глянуть конечно не против
ну все, я завел)
по совету передал импорт донору, он по крону тащит файлы к себе, а Сайт потом их сносит со своего диска при положительном ответе донора
из плюсов, кеширование работает, урлы генерятся для каждого ипа индивидуально, ограниченные по времени, довольно долго, но не вечно)
при этом файлы остаются какими были, сервак просто подменяет физический урл за счет X-accell-redirect оставляя скрытым прямой путь к файлу.
дистанция между серваками тоже не играет критической роли т.к. основной сайт зверь-машина, а донор имеет 10минутный лимит на исполнение скрипта, и может все это время тянуть с основного сайта файл, без риска запороть его.
фтп даже не понадобился. тащит прям по хттп, т.к скрипт в свою фс запишет copy() врят ли медленнее чем туда же но через ftp_put()
как то так. и данных от фтп не пришлось хранить в скрипте
ramzes, крутатень. Можешь оформить скрипт донора по загрузке файлов в минипакет и раздать нуждающимся, полезная штука будет.
да сам импорт проще некуда
при запросе файла если донор отдает нот эксистс, шлю еще один запрос на запись импорта в очередь.
потом донор просто кроном читает лог очереди, тащит файл и стирает запись.
в следующий раз при запросе файла донор отдаст эксистс и уже скрипт логического сервера, получив ответ снесет файл с хоста, перекинув юзера на полученый от донора урлю
код пока постить нет смысла. всю ночь он будет таскать файлы, потом буду смотреть логи по сбоям, если их не будет, включу уничтожение файлаа-оригинала.
если все пройдет без сбоев в течении какого то времени, можно будет говорить о рабочем решении)
12кб весит донор)))
Не читал полностью тему, поэтому не знаю, решили Вы задачу или нет.
Моё решение вашей проблемы:
1. Файл изначально сохраняется во временной директории основного сервера.
2. После отправки формы в БД сохраняется id сервера и путь к файл. Пример для основного сервера (master, files/123/img.png)
3. После сохранения данных формы, отправляется фоновая задача в очередь которую можно реализовать на Gearman.
4. Воркер читает очередь, отправляя файл по фтп.
5. После успешной передачи, файл удаляется на master сервере и изменяются данные в БД (id сервера и путь)
Таким образом решаем следующие проблемы:
1. На slave серверах не нужно поднимать php
2. При маштабируемости можно поднять больше воркеров.
Если нужно, могу запостить краткую реализацию.