Czy ram wplywa na przesylanie plikow ?

0

Mam vps co ma 1 GB i jak chce wgrac 1 GB plik na serwer przez strone uzywajac php to mam info out of memory. To znaczy ze co on caly plik do pamieci wrzuca ? po..balo go? czy cos innego tu jest nie tak ?

0

Wszystko zależy, ale możliwe, że PHP chce zapisać plik w katalogu /tmp, który bardzo często jest montowany jak tmpfs czyli system plików, który zapisuje dane w RAMie a nie na dysku. Ogólnie jeśli chcesz wgrywać tak duże pliki to zdecydowanie lepiej jest użyć zewnętrznego file storage jak S3, będzie łatwiej i wydajniej.

0

PHP tak wlaśnie czyni z tym tmp (w sensie zapisuje tam uploadowany plik), co jest swoją drogą ciekawą podatnością z punktu widzenia bezpieczeństwa, bo ten plik w tmp "wisi" dopóki transmisja się nie zakończy. Jedyna trudność jest taka że ten tymczasowy plik ma losową nazwę.

0

Po pierwsze sprawdziłbym ustawienia php'a
post_max_size, upload_max_filesize, max_execution_time

Poza tym uważam, że do zapisu dużych plików nie jest potrzebna duża ilość ramu - czy jeśli chciałbyś przesłać obraz ISO blurejki (ponad 40gb) - to czy tyle ramu miałby mieć Twój serwer? Jak dwóch userów będzie przesyłać na raz to 80gb?

Ale... przy przesyłaniu dużych plików powinieneś zastosować inną technikę - czyli porcjować dane (php chunked upload) - wysyłając je w paczkach np po 500mb, przy czym dzięki ajaxowi - w teorii mógłbyś przesyłać kilka paczek równolegle (chociaż tutaj to nie miałoby raczej znaczenia).

0

No wlasnie mam plik na serwerze dwa pliki 500 mega i 1 GB i chce p[rzez AWS sdk php wgrac to na S3 i jak wgrywam pliki do 500 mega to ok a jak wrzucam 500 i 1GB nie dziala. wiec mialem server na s3 EC2 taki testowy z 1 GB ramu dlatego teraz wlaczylem na chwile druga instancje 4 GB ramu i sprawdze czy zadziala. jesli tak to znaczy ze jest ok i wywale te isntancje z 4 GB a jak skoncze strone to wtedy przejde na ta duza instancje. chce pliki ladowac max 5 GB wiec musze wziac cos co ma z 8 albo z 10 GB ramu ak mowicie. a jesli 4GB by bylo za malo to znaczy ze cos nie tak robie chyba

0

Dobra dziala jak mowiliscie dalem 4 GB ramu poszedl plik 1 GB z HTOP wyszlo ze zuzywa 1.1GB Ramu czyli 5GB no to max pocisne 8 GB ramu bo S3 pozwala zaladowac 5GB w single put object. I elegancko Pany dzieki kurcze :) a dla klientow zrobie 2 GB max a jak wiecej to musza wykupic membershipa zeby mi sie oplacalo trzymac drozsza instancje. ta z 8 GB rocznie 3 tys okolo a ta z 12 GB rocznie 6 tys ale mozna bedzie spokojnie sobie rozszerzac instancje wiec luzik zaczne od malej i sie bedziemy przelaczac :D Dzieki jeszcze raz

0
[axelbest napisał(a)):

Po pierwsze sprawdziłbym ustawienia php'a
post_max_size, upload_max_filesize, max_execution_time

Poza tym uważam, że do zapisu dużych plików nie jest potrzebna duża ilość ramu - czy jeśli chciałbyś przesłać obraz ISO blurejki (ponad 40gb) - to czy tyle ramu miałby mieć Twój serwer? Jak dwóch userów będzie przesyłać na raz to 80gb?

Ale... przy przesyłaniu dużych plików powinieneś zastosować inną technikę - czyli porcjować dane (php chunked upload) - wysyłając je w paczkach np po 500mb, przy czym dzięki ajaxowi - w teorii mógłbyś przesyłać kilka paczek równolegle (chociaż tutaj to nie miałoby raczej znaczenia).

to co mowisz to zastosowalem jak klient laduje plik na moj serwer to wtedy przesylam male porcje po 1 mega. wiec to jest ok bo odbieram pliki i sie lacza w jeden. nastepnie cron leci zeby rpzeslac ten plik z serwera na S3 dlatego wykonuje jedna operacje jezli jest 20 plikow po 1 GB na moim serwerze wkolejce a ja mam pamieci te 4 GB to wysylam jeden plik za jednym razem. a cron smiga co minute i sprawdza czy jest uruchomiony jesli tak to nie robi nic i za minute znowu sie uruchamia itd. Klient widzi stan pliku w sensie oczkuje, a jak wysylam to przetwarzanie. Nie jestem YT ale oni maja tez podobnie bo jak wgrywalem pliki to tez czeka sie na przetworzenie po wgraniu

0

@Krwawy Ogórek a dla czego nie wgrywasz bezpośrednio do S3 tylko przez swój serwer to robisz? IMHO trochę bez sensu.

1 użytkowników online, w tym zalogowanych: 0, gości: 1