prehistory
Ko te mea noa i hiahia ahau ki te penapena neke atu i te 1.5 TB o nga raraunga ki tetahi waahi, me te whakarato i te kaha mo nga kaiwhakamahi noa ki te tango ma te hononga hono. I te mea i nga wa o mua ka haere te maha o nga mahara ki te VDS, ko te utu mo te riihi kaore i te tino uru ki roto i te tahua kaupapa mai i te waahanga "kaore he mahi", mai i nga raraunga puna he VPS 400GB SSD ahau, kei hea, ahakoa ahau. i hiahia ahau, kare e taea e au te whakatakoto i te 1.5TB o nga whakaahua me te kore e pupuhi korekore ka angitu.
Na ka mahara ahau ki te mukua e ahau nga paraurehe mai i te Google Drive, penei i nga kaupapa ka haere noa i runga i te Windows XP, me etahi atu mea kua neke mai i tetahi taputapu ki tetahi atu mai i nga ra kaore i tino tere te Ipurangi kaore he mutunga ( hei tauira, ko enei momo 10-20 o te pouaka mariko kaore pea he uara ke atu i te nostalgic), katahi ka pai nga mea katoa. Kare i roa te korero. Na, ko te pakaru i te rohe mo te maha o nga tono ki te api (na te mea, ko te tautoko hangarau me te kore he raru ka piki ake te motunga o nga tono mo ia kaiwhakamahi ki te 100 i roto i te 10 hēkona), ka tere te rere o nga raraunga ki te waahi o tana tukunga atu. .
He pai nga mea katoa, engari inaianei me tuku atu ki te kaiwhakamahi mutunga. I tua atu, kaore he whakarereketanga ki etahi atu rauemi, engari kia pehi noa te tangata i te paatene "Tikiake" ka waiho hei rangatira harikoa o te konae taonga.
I konei, na te Atua, i uru ahau ki nga tini raruraru. I te tuatahi he tuhi i roto i te AmPHP, engari kaore au i makona ki te uta i mahia e ia (he peke koi i te timatanga ki te 100% te kai matua). Na ka uru mai te takai riipene mo ReactPHP, he pai ki aku hiahia mo te maha o nga huringa PTM kua pau, engari kaore i tino tere taku hiahia (i puta mai ka taea e koe te whakaiti noa i te waa waea. curl_multi_select, engari he ahua kakai to tatou rite ki te whiringa tuatahi). I ngana ano ahau ki te tuhi i tetahi ratonga iti ki Rust, a he tere te mahi (he mea miharo na te mea i mahi, na taku mohiotanga), engari i hiahia ahau kia nui ake, a he uaua ki te whakarite. I tua atu, ko enei otinga katoa he rerekee te whakautu, a ka hiahia ahau ki te whai i te waa ka mutu te tango i nga konae me te tino tika.
I te nuinga o te waa, he kopikopiko mo te wa poto, engari i whai hua. Tae noa ki tetahi ra ka puta mai he whakaaro he mea whakamiharo i roto i tona haurangi: nginx, i roto i te ariā, ka taea e au te mahi i taku e hiahia ana, te mahi tere, me te tuku i nga momo rereke katoa me te whirihoranga. Me ngana tatou - me pehea te mahi? A, i muri i te haurua o te ra o te rapu haere tonu, ka puta mai he otinga e mahi pai ana mo etahi marama me te tutuki i aku whakaritenga katoa.
Te whakatu NGINX
# Первым делом создадим в конфигах нашего сайта отдельную локацию.
location ~* ^/google_drive/(.+)$ {
# И закроем её от посторонних глаз (рук, ног и прочих частей тела).
internal;
# Ограничим пользователям скорость до разумных пределов (я за равноправие).
limit_rate 1m;
# А чтоб nginx мог найти сервера google drive укажем ему адрес резолвера.
resolver 8.8.8.8;
# Cоберем путь к нашему файлу (мы потом передадим его заголовками).
set $download_url https://www.googleapis.com/drive/v3/files/$upstream_http_file_id?alt=media;
# А так же Content-Disposition заголовок, имя файла мы передадим опять же в заголовках.
set $content_disposition 'attachment; filename="$upstream_http_filename"';
# Запретим буфферизировать ответ на диск.
proxy_max_temp_file_size 0;
# И, что немаловажно, передадим заголовок с токеном (не знаю почему, но в заголовках из $http_upstream токен передать не получилось. Вернее передать получилось, но скорей всего его где-то нужно экранировать, потому что гугл отдает ошибку авторизации).
proxy_set_header Authorization 'Bearer $1';
# И все, осталось отправить запрос гуглу по ранее собранному нами адресу.
proxy_pass $download_url;
# А чтоб у пользователя при скачивании отобразилось правильное имя файла мы добавим соответствующий заголовок.
add_header Content-Disposition $content_disposition;
# Опционально можно поубирать ненужные нам заголовки от гугла.
proxy_hide_header Content-Disposition;
proxy_hide_header Alt-Svc;
proxy_hide_header Expires;
proxy_hide_header Cache-Control;
proxy_hide_header Vary;
proxy_hide_header X-Goog-Hash;
proxy_hide_header X-GUploader-UploadID;
}
He putanga poto kaore he korero ka kitea i raro i te kaipahua
location ~* ^/google_drive/(.+)$ {
internal;
limit_rate 1m;
resolver 8.8.8.8;
set $download_url https://www.googleapis.com/drive/v3/files/$upstream_http_file_id?alt=media;
set $content_disposition 'attachment; filename="$upstream_http_filename"';
proxy_max_temp_file_size 0;
proxy_set_header Authorization 'Bearer $1';
proxy_pass $download_url;
add_header Content-Disposition $content_disposition;
proxy_hide_header Content-Disposition;
proxy_hide_header Alt-Svc;
proxy_hide_header Expires;
proxy_hide_header Cache-Control;
proxy_hide_header Vary;
proxy_hide_header X-Goog-Hash;
proxy_hide_header X-GUploader-UploadID;
}
Kei te tuhi matou i tetahi tuhinga hei whakahaere i enei hari katoa
Ka noho te tauira ki te PHP me te tuhi me te iti o te kete. Ki taku whakaaro ka taea e te tangata e mohio ana ki tetahi atu reo ki te whakauru i tenei waahanga ma te whakamahi i taku tauira.
<?php
# Токен для Google Drive Api.
define('TOKEN', '*****');
# ID файла на гугл диске
$fileId = 'abcdefghijklmnopqrstuvwxyz1234567890';
# Опционально, но так как мы не передаем никаких данных - почему бы и нет?
http_response_code(204);
# Зададим заголовок c ID файла (в конфигах nginx мы потом получим его как $upstream_http_file_id).
header('File-Id: ' . $fileId);
# И заголовок с именем файла (соответственно $upstream_http_filename).
header('Filename: ' . 'test.zip');
# Внутренний редирект. А еще в адресе мы передадим токен, тот самый, что мы получаем из $1 в nginx.
header('X-Accel-Redirect: ' . rawurlencode('/google_drive/' . TOKEN));
Ngā putanga
I te nuinga o te waa, he maamaa tenei tikanga ki te whakarite i te tohatoha o nga konae ki nga kaiwhakamahi mai i te rokiroki kapua. Ae, ahakoa mai i te waea waea, i te VK ranei, (mehemea kaore te rahi o te konae e nui ake i te rahinga e whakaaetia ana o tenei rokiroki). He rite taku whakaaro ki
Mauruuru koe mo to aro. Te ti'aturi nei au he ahua pai, he whai hua ranei taku korero ki a koe.
Source: will.com