Я перемещаю приложение с моей машины разработки на тестовый сервер. При подключении к моей локальной базе данных mysql разработки все работает так, как ожидалось. При попытке подключиться к нашему тестовому серверу возвращается время ожидания запросов через 45 секунд и ошибка 500.Время ожидания соединения Laravel при подключении к базе данных
Я проверил, что серверы могут взаимодействовать и PHP можно получить результаты, используя базовую функциональность MySQLi PHP, и результаты будут возвращены, как и ожидалось:
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql = "SELECT * FROM users";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
// output data of each row
while($row = $result->fetch_assoc()) {
echo var_export($row, true);
}
} else {
echo "0 results";
}
$conn->close();
Следующая оба терпеть неудачу и хит ограничения времени ожидания в Laravel:
$users = DB::table('users')->get();
$users = User::all();
Мысли? Идеи? Мнения?
Первый - это просто попытка подключения. Второй извлекает все записи из таблицы User. Они не сравниваются. Попробуйте 'select * from users' в командной строке mysql и посмотрите, сколько времени потребуется. Затем попробуйте выполнить некоторые протоколирования - включите медленный журнал mysql и/или general_log в течение всего теста. – aynber
@aynber Обновленный вопрос после изучения вашего комментария – commanderZiltoid
Следующий шаг - выяснить, является ли это просто таблицей или всеми запросами БД с использованием этих методов. Попробуйте 'DB :: select (" SELECT NOW() ");' и посмотрите, не истечет ли этот тайм-аут. Затем «DB :: select» («SHOW TABLES»); 'и' DB :: select («DESCRIBE users»); ' – aynber