Добрый день!
На работе поставили простенький сервер на Apache2 + PHP + MySQL на Windows (потому что никто среди нас в linux не умеет) с белым IP. Задача сервера принимать файлы и комментарии к нему, и записывать ссылку на файл и комментарий в БД, которая в свою очередь выводится в таблицу на фронте (wordpress как оболочка :).
Когда тестировал на локальной машине файлы загружались моментально. После того как поставил сервер на другую машину (с белым IP), на него файлы грузятся со скоростью 1Мбит/сек, когда как от провайдера скорость 100 Мбит. Через Speedtest проверял, скорость заявленная что на клиентской машине, что на сервере.
Никак не могу понять, где узкое место, которое режет скорость до 1Мбит/сек.
Да, и еще сервер конечно не супер круто настроен по безопасности т.к. я в этом особо ничего и не понимаю, Гугл в помощь, а вот с этой проблемой Гугл не помог.
Файлы с комментариями загружаются через форму на фронте, передаются через Ajax скрипту php, который в свою очередь с полученными данными делает всякое и кладёт файлы в папку, а данные с ссылкой в БД.
Код формы<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>test</title>
<script type="text/javascript" src="/js/jquery.js"></script>
<script type="text/javascript" src="/js/form2.js"></script>
</head>
<body>
<form id="otpravka" action="/insert.php" enctype="multipart/form-data" method="post">
<p>
<label for="Sub_division">Подразделение:</label>
<select type="text" name="Subdivision" id="Sub_division" required>
<option value="">Выберите цех</option>
<option value="Цех1">Цех 2</option>
<option value="Цех2">Цех 2</option>
</select>
</p>
<p>
<label for="Name_TU">Наименование:</label>
<input type="text" name="NameTU" id="Name_TU">
</p>
<p>
<label for="Signing_Date">Дата подписания:</label>
<input type="date" name="SigningDate" id="Signing_Date">
</p>
<p>
<label for="Validity_Date">Срок действия до:</label>
<input type="date" name="Validity" id="Validity_Date">
</p>
<p>
<label for="File_URL">Выбрать файл приказа:</label>
<input type="file" name="file" id="File_URL" required>
</p>
<input type="submit" value="Отправить">
<input type="hidden" value="" name="recaptchaResponse"></form>
</body>
</html>
Код JSjQuery(document).ready(function() {
jQuery('#otpravka').submit(function(event){
event.preventDefault();
let fd = new FormData(this);
jQuery.ajax({
url: jQuery(this).attr('action'),
type: jQuery(this).attr('method'),
data: fd,
cache: false,
contentType: false,
processData: false,
success: function(data){
console.log('succes');
alert('Данные отправлены');
console.log(data);
jQuery('#otpravka')[0].reset();
},
});
});
});
PHP<?php
$files_dir = 'files/';
if(isset($_FILES["file"])){
if(is_uploaded_file($_FILES["file"]["tmp_name"])){
move_uploaded_file($_FILES["file"]["tmp_name"], $files_dir.$_FILES["file"]["name"]);
// Тут выводим ссылку
$linkDL = $files_dir.$_FILES["file"]["name"];}}
/* Попытка подключения к серверу MySQL. Предполагая, что вы используете MySQL
сервер с настройкой по умолчанию (пользователь root без пароля) */
$link = mysqli_connect("localhost", "root", "", "wordpress");
// Проверьте подключение
if($link === false){
die("ERROR: Нет подключения. " . mysqli_connect_error());
}
// экранирует специальные символы в строке
$Subdivision = mysqli_real_escape_string($link, $_REQUEST['Subdivision']);
$NameTU = mysqli_real_escape_string($link, $_REQUEST['NameTU']);
$SigningDate = mysqli_real_escape_string($link, $_REQUEST['SigningDate']);
$Validity = mysqli_real_escape_string($link, $_REQUEST['Validity']);
$linkDownload = $linkDL;
// Попытка выполнения запроса вставки
$sql = "INSERT INTO wp_tceha (Subdivision, NameTU, SigningDate, Validity, FileURL) VALUES ('$Subdivision', '$NameTU', '$SigningDate', '$Validity', '$linkDownload')";
if(mysqli_query($link, $sql)){
echo "Записи успешно добавлены.";
} else{
echo "ERROR: Не удалось выполнить $sql. " . mysqli_error($link);
}
// Закрыть соединение
mysqli_close($link);
?>
И заранее спасибо)