Symfony post api загружается слишком долго

У меня есть api, который загружает изображения пользователей на сервер.

Он возьмет изображения в формате base64 и отправит их на сервер. Но проблема в том, что для некоторых пользователей это займет много времени, а для некоторых это работает хорошо.

Я не понимаю, почему это происходит. Но в целевом каталоге содержится 700 ГБ данных.

код для загрузки: ` $ file будет иметь формат изображения base64 $ this-> file = $ файл;

    if ($this->id && !empty($this->path) && !is_null($file)) {
        $this->storeFilenameForRemove();
    }

    if ($file instanceof File) {

        if (isset($this->path)) {
            $this->temp = $this->path;
            $this->path = null;
        } else {
            $this->path = 'initial';
        }
    } else if (gettype($file) == 'string') {

        if (preg_match('/data:(\w+)/(\w+);base64,/i', $file, $matches)) {

            if ($matches) {

                $file = preg_replace('/data:(\w+)/(\w+);base64,/i', '', $file);

                $tmpFile = Array();
                $tmpFile['data'] = base64_decode( str_replace(' ', '+', $file) );

                if ($matches[1] === 'image') {

                    $tmpFile['name'] = uniqid().'.png';
                } else {

                    $tmpFile['name'] = uniqid().'.'.$matches[2];
                }

                $tmpFile['handle'] = fopen( $this->getUploadRootDir().'/'.$tmpFile['name'], 'w' );

                // inject the raw image data into the new file
                fwrite( $tmpFile['handle'], $tmpFile['data'] );
                fclose( $tmpFile['handle'] );

                $this->path = $tmpFile['name'];
            }
        }
    } else {

        $this->file = $file;
    }`

Я думал, что дело в размере файла, но вы просто сказали нам, что он работает (означает, что загрузка выполняется быстро) для некоторых пользователей. так что это, возможно, для ваших логических операторов, как вы интерпретируете свою загрузку, какие условия вы используете, пожалуйста, поделитесь кодом здесь, чтобы мы могли вам помочь

MoxGeek 30.11.2018 09:44

Размер файла и скорость Интернет-линии будут влиять на каждого пользователя по-разному.

Schalk Keun 30.11.2018 10:04

размер файла небольшой, а скорость интернета 90 Мбит / с

Swathi 30.11.2018 11:06
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
3
51
1

Ответы 1

Я не уверен, что выполнение preg_match в строке с кодировкой base64 - хорошая идея, хотя я не уверен, что решит все ваши проблемы, связанные со скоростью, Я уверен, что реализация другой проверки для строк с кодировкой base64 улучшит скорость .

Замените следующее:

if (preg_match('/data:(\w+)/(\w+);base64,/i', $file, $matches)) {

с этим

if ( base64_encode(base64_decode($file)) === $file){

Другие вопросы по теме