使用远程 MySQL 时 Eloquent 非常慢

我最近不得不将我的数据库传输到远程服务器。

我使用 Postman 连接到在本地主机上运行的 PHP 以发出相同的请求。这是结果,

本地主机和 Eloquent 上的 MySQL:~30 毫秒

远程服务器上的 MySQL 和 Eloquent:~2.7 秒

本地主机和 PHP 上的 MySQL:~10 毫秒

远程服务器和 PHP 上的 MySQL:~850 毫秒

从我的电脑到远程服务器 ip 的平均 ping 大约是 150 毫秒。

这是我使用的 PHP 脚本,

// Create connection

$conn = new mysqli($servername, $username, $password, $dbname);


if ($conn->connect_error) {

    die("Connection failed: " . $conn->connect_error);

}


$sql = "select * from `online` where `online`.`id` = 1 limit 1";

$result = $conn->query($sql);


var_dump($result);

为了雄辩,我只是使用Online::find(1).


我还没有尝试在服务器上运行 Eloquent,但这正常吗?如果我要在不同的服务器上使用远程 mysql 数据库,我应该避免使用 eloquent 吗?


编辑:


我正在更改一些值,当我从雄辩的配置中删除字符集和排序规则值时,响应时间提高到 1.7s,快了 1s。


'charset' => 'utf8mb4',

'collation' => 'utf8mb4_unicode_ci',


慕斯709654
浏览 157回答 1
1回答

慕斯王

Eloquent VS MySQLi 本机 RAW 执行Eloquent ORM比它慢,Native MySQLi Execution因为它有很多内置功能。但是Eloquent 会让你的代码简洁明了。并提供更好的security。本地主机VS远程主机我们讲的时候local server,性能就看你的了local environment。但是当你使用时Remote Host,性能会因为以下原因而改变。网络连接。您的远程主机的位置。远程主机的性能。最佳实践/架构将应用程序部署到生产环境时,通常我们不会将数据库和应用程序放在同一台服务器上。在生产中,专家会做以下事情来提高数据库性能。使用数据库复制(跨区域)。索引。使用缓存。
打开App,查看更多内容
随时随地看视频慕课网APP