Сбой загрузки PHP через 300 секунд на виртуальном хостинге. Сбой загрузки фрагментов laravel - PullRequest
0 голосов
/ 14 октября 2019
 <form action="/upload/test/f" class="form" method="post" enctype="multipart/form-data">
                            {{ csrf_field() }}
                            <input id="fileupload" type="file" name="file" data-url="http://localhost:8000/upload" style="display: inline;" >
                            <ul id="file-upload-list" class="list-unstyled">

                            </ul>
                            <input type="submit" value="submit">
                        </form>
   //Controller Laravel
  public function storebigfile(Request $request){
        ini_set('post_max_size', '0');
        ini_set('upload_max_filesize', '-1');
        ini_set('max_input_time', '-1');
        ini_set('memory_limit', '256M');
        ini_set('max_execution_time', '-1');

        // create the file receiver
        $receiver = new FileReceiver("file", $request, HandlerFactory::classFromRequest($request));

        // check if the upload is success, throw exception or return response you need
        if ($receiver->isUploaded() === false) {
            throw new UploadMissingFileException();
        }

        // receive the file
        $save = $receiver->receive();

        // check if the upload has finished (in chunk mode it will send smaller files)
        if ($save->isFinished()) {
            // save the file and return any response you need, current example uses `move` function. If you are
            // not using move, you need to manually delete the file by unlink($save->getFile()->getPathname())
            return $this->saveFile($save->getFile());
        }

        // we are in chunk mode, lets send the current progress
        /** @var AbstractHandler $handler */
        $handler = $save->handler();

        return response()->json([
            "done" => $handler->getPercentageDone(),
        ]);
    }

protected function saveFile(UploadedFile $file)
    {
        $fileName = $this->createFilename($file);
        // Group files by mime type
        $mime = str_replace('/', '-', $file->getMimeType());
        // Group files by the date (week
        $dateFolder = date("Y-m-W");
        // Build the file path
        $filePath = "upload/{$mime}/{$dateFolder}/";
        $finalPath = storage_path("app/".$filePath);
        // move the file name
        $file->move($finalPath, $fileName);
        return response()->json([
            'path' => $filePath,
            'name' => $fileName,
            'mime_type' => $mime
        ]);
    }

    protected function createFilename(UploadedFile $file)
    {
        $extension = $file->getClientOriginalExtension();
        $filename = str_replace(".".$extension, "", $file->getClientOriginalName()); 
    // Filename without extension
        // Add timestamp hash to name of the file
        $filename .= "_" . md5(time()) . "." . $extension;
        return $filename;
    }

Таким образом, если подключение к Интернету медленное и сценарии загружают файл в течение 300 секунд, происходит сбой. Говоря, сброс соединения. Но если я подключусь к быстрому интернету, он будет загружать файлы до 300 секунд и загружать файлы без проблем.

Я изменил max_execution_size и еще одну максимальную загрузку файла до максимума в php_ini, но ничего не помогает. редактирование .htaccess не помогает. Я поговорил с хостинг-провайдером, чтобы изменить настройки apache, но они говорят, что я могу редактировать на php.ini или .htaccess.

Пожалуйста, помогите Спасибо заранее

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...