我用PHP Laravel和Vue JS创建了一个项目。并使用Amazon AWS的基本计划对其进行配置。一开始,它运行良好,没有任何问题。但是现在,当我尝试添加新博客帖子或编辑内容繁重的现有博客帖子时,显示503 Service Unavailable错误。我为博客开发了算法,如下所示。
表格:
博客-此表用于存储帖子的轻量数据,例如标题,特色图片,URL等。
posts-此表用于存储帖子的实际内容。它包含三列,例如博客ID,内容,顺序。我在这里 使用文本数据类型作为内容,将接受将近70k个字符。
算法: 当我提交博客文章时,首先它将在博客表中创建一个包含轻量数据的行。之后,实际的帖子内容将被拆分为一个数组,每个项目包含65k个字符。每个项目都将作为新行存储在posts表中,并在blogs表中创建blog id。在检索帖子时,它将把帖子表中的行合并在一起,并显示实际的帖子。
注意:以上过程运行正常,没有任何问题。
问题: 实际的问题是,当我尝试添加新帖子或使用图像编辑现有帖子(产生大量字符)时,它突然开始显示503错误,即使该帖子正在博客表中创建且添加的字符数也不完整在posts表中,同时添加其余内容,显示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++;
}
我希望输出将重定向到带有成功消息“帖子已成功创建”的博客页面,但实际结果是
服务不可用 由于维护停机或容量问题,服务器暂时无法满足您的请求。请稍后再试。
答案 0 :(得分:0)
您似乎需要增加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