503 Служба недоступна при отправке формы - PullRequest
0 голосов
/ 25 октября 2019

Я создал проект с PHP Laravel и Vue JS. и настроил его в соответствии с базовым планом Amazon AWS. В начале все работало без проблем. Но теперь, когда я пытаюсь добавить новую запись в блог или отредактировать уже существующую запись в блоге с тяжелым контентом, отображается ошибка 503 Service Unavailable. Я разработал алгоритм для блога, как показано ниже.

Таблицы:

  1. блоги - эта таблица используется для хранения легких данных поста, таких как заголовок,рекомендуемое изображение, URL и т. д.

  2. сообщений - эта таблица используется для хранения фактического содержания сообщения. Он содержит три столбца, такие как идентификатор блога, контент, порядок. Здесь я использую текстовый тип данных для контента, который будет принимать почти 70 000 символов.

Алгоритм: когда я отправляю сообщение в блоге, сначала он создает строку в таблице блогов слегкие данные. И после этого фактический контент поста будет разделен на массив, каждый элемент которого содержит 65 тыс. Символов. И каждый элемент будет сохранен в таблице сообщений в виде новой строки с идентификатором блога, созданным в таблице блогов. Во время получения сообщения оно объединяет строки в таблице сообщений и отображает фактическое сообщение.

Примечание. Вышеописанный процесс работает без проблем.

Проблема:Реальная проблема заключается в том, что внезапно он начал показывать ошибку 503, когда я пытаюсь добавить новый пост или редактировать существующий пост с изображениями (генерирует большое количество символов), даже пост создается в таблице блогов, и добавляется неполное количество символовв таблице сообщений при добавлении остального содержимого отображается ошибка 503.

Примечание. Даже на моем локальном хосте и другом сервере Bluehost все работает нормально.

Я пытался уменьшить содержимоеразделение на 25 000 символов, но результат показывает то же самое.

if($request->hasFile('image')) {
            $filenameWithExt = $request->file('image')->getClientOriginalName();
            $filename = pathinfo($filenameWithExt, PATHINFO_FILENAME);
            $extension = $request->file('image')->getClientOriginalExtension();
            $fileNameToStore = 'post_' . time() . '.' .$extension;
            $path = public_path('uploads/posts/' . $fileNameToStore);
            if(!file_exists(public_path('uploads/posts/'))) {
                mkdir(public_path('uploads/posts/'), 0777);
            }
            Image::make($request->file('image')->getRealPath())->resize(900, NULL)->save($path);
        }else {
            $fileNameToStore = NULL;
        }

        if($request->hasFile('author_image')) {
            $filenameWithExt = $request->file('author_image')->getClientOriginalName();
            $filename = pathinfo($filenameWithExt, PATHINFO_FILENAME);
            $extension = $request->file('author_image')->getClientOriginalExtension();
            $authorImage = 'author_' . time() . '.' .$extension;
            $path = public_path('uploads/authors/' . $authorImage);
            if(!file_exists(public_path('uploads/authors/'))) {
                mkdir(public_path('uploads/authors/'), 0777);
            }
            Image::make($request->file('author_image')->getRealPath())->resize(50, 50)->save($path);
        }else {
            $authorImage = NULL;
        }

        $blog = Blog::create([
            'title' => $request->title,
            'image' => $fileNameToStore,
            'category' => $request->category,
            'meta_description' => $request->meta_description,
            'meta_keywords' => $request->meta_keywords,
            'url' => $request->url,
            'meta_title' => $request->meta_title,
            'author_name' => $request->author_name,
            'author_image' => $authorImage,
            'author_linkedin' => $request->author_linkedin,
            'popular' => $request->popular
        ]);

        $contents = str_split($request->post, 65000);
        $i = 1;
        foreach($contents as $key => $item)
        {
            Post::create([
                'post' => $blog->id,
                'content' => $item,
                'order' => $i
            ]);

            $i++;
        }

Я ожидаю, что выходные данные будут перенаправлены обратно на страницу блогов с сообщением об успехе "Сообщение успешно создано", но фактический результат равен

Сервис недоступен Сервер временно не может обслуживать ваш запрос из-за обслуживанияВремя простоя или проблемы с производительностью. Пожалуйста, попробуйте позже.

1 Ответ

0 голосов
/ 25 октября 2019

Похоже, вам нужно увеличить значения post_max_size и upload_max_filesize в php.ini. Руководство по AWS: https://aws.amazon.com/ru/premiumsupport/knowledge-center/wordpress-themes-2mb/

Я также рекомендую использовать транзакции для вашего случая. Это поможет избежать частично созданных постов. https://laravel.com/docs/5.8/database#database-transactions

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