Moja aplikacja internetowa PHP ma API, które może odbierać rozsądnie duże pliki (do 32 MB), które są kodowane base64. Celem jest napisanie tych plików gdzieś w moim systemie plików. Oczywiście dekodowane. Jaki byłby najmniej intensywny sposób na zrobienie tego?Jak rozpakować duże pliki base64 w PHP
Edycja: Odbieranie plików za pośrednictwem interfejsu API oznacza, że mam ciąg 32 MB w mojej aplikacji PHP, a nie plik źródłowy o wielkości 32 MB w innym miejscu na dysku. Muszę odszyfrować ten ciąg na system plików.
Korzystanie własne base64_decode PHP() nie jest cięcie, bo to wykorzystuje dużo z pamięci więc utrzymać prowadzenie do limitu pamięci PHP (wiem, mogłem podnieść ten limit, ale nie czuję się dobrze o umożliwienie PHP do użycia 256 MB na proces).
Jakieś inne opcje? Czy mogę zrobić to ręcznie? Lub zapisz plik na dysk zakodowany i wywołaj jakieś zewnętrzne polecenie? Jakiekolwiek myśli?
Niezły pomysł, ale nie tego, czego szukam. W moim przypadku aplikacje klienckie przesyłają duże pliki przez XML-RPC (HTTP POST) do mojego serwera (wraz z kilkoma innymi parametrami). Klienci mogą znajdować się za NAT i firewallami, więc pobieranie danych od klienta przy użyciu GET nie jest możliwe. –
Jeśli struktura odpowiedzi rpc xml jest nieco statyczna, można ręcznie przejść przez treść odpowiedzi, więc nadal można całkowicie uniknąć użycia pamięci. Jeśli musisz umieścić dane w zmiennej tymczasowej, możesz nieco zmienić ustawienia. (Aktualizuję przykład zaraz po przykładzie;)) – Evert
Dzięki za aktualizację. Uważam to za lepsze od odpowiedzi, którą pierwotnie zaakceptowałem. –