Мое PHP-приложение имеет API, который может получать достаточно большие файлы (до 32 МБ), которые кодируются base64. Цель состоит в том, чтобы записать эти файлы где-нибудь в моей файловой системе. Конечно, декодировано. Каким будет наименее ресурсоемкий способ сделать это?Как base64-декодировать большие файлы в PHP
Редактировать: Получение файлов через API означает, что у меня есть 32 МБ строка в моем приложении PHP, а не 32 МБ исходного файла где-то на диске. Мне нужно, чтобы эта строка была декодирована в файловую систему.
Используя собственный base64_decode РНР() не разрезая его, потому что он использует много памяти, так что я продолжать работать в ограничение по памяти в PHP (я знаю, я мог бы поднять этот предел, но я не чувствую себя хорошо о разрешении PHP для использования 256 МБ или около того для каждого процесса).
Любые другие варианты? Могу ли я сделать это вручную? Или записать файл на диск, закодированный и вызвать некоторую внешнюю команду? Любая мысль?
Хорошая идея, но не то, что я ищу. В моем случае клиентские приложения подталкивают большие файлы по XML-RPC (HTTP POST) к моему серверу (наряду с несколькими другими параметрами). Клиенты могут находиться за NAT и брандмауэрами, поэтому получение данных от клиента с помощью GET невозможно. –
Если структура ответа xml rpc несколько статична, вы можете вручную пройти через тело ответа, так что вы все равно можете полностью избежать использования памяти. Если вы должны поместить данные во временную переменную, вы можете немного изменить настройку. (Я обновляю пример сразу после примера;)) – Evert
Спасибо за обновление. Я считаю, что он превосходит тот ответ, который я изначально принял. –