Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 一个用户数据库,不同服务器上的两个应用程序_Php_Mysql_Ruby On Rails_Codeigniter - Fatal编程技术网

Php 一个用户数据库,不同服务器上的两个应用程序

Php 一个用户数据库,不同服务器上的两个应用程序,php,mysql,ruby-on-rails,codeigniter,Php,Mysql,Ruby On Rails,Codeigniter,我目前在一个VPS上运行一个Rails应用程序,它有自己的MySQL数据库。该数据库还包含用户表。我们目前正在构建第二个应用程序,它应该有相同的用户。如果其中一个注册了其中一个,那么这两个都有一个账户 但是,问题是第二个(PHP)应用程序必须位于另一个位置。这里的最佳实践是什么?我可以直接连接到外部数据库而不造成很大的延迟吗?我应该同步它们吗?首先创建一个API 我正在寻找最容易维护的方法。谢谢。您可以从第二个应用程序连接到数据库。 但是连接的延迟总是存在的。 另一件事是你必须考虑安全性,因为数

我目前在一个VPS上运行一个Rails应用程序,它有自己的MySQL数据库。该数据库还包含用户表。我们目前正在构建第二个应用程序,它应该有相同的用户。如果其中一个注册了其中一个,那么这两个都有一个账户

但是,问题是第二个(PHP)应用程序必须位于另一个位置。这里的最佳实践是什么?我可以直接连接到外部数据库而不造成很大的延迟吗?我应该同步它们吗?首先创建一个API


我正在寻找最容易维护的方法。谢谢。

您可以从第二个应用程序连接到数据库。 但是连接的延迟总是存在的。 另一件事是你必须考虑安全性,因为数据库将是可访问的世界。您只能将连接限制到第二个web服务器。 为了减少延迟,您可以选择使用memcached或其他缓存,这样就不必反复访问数据库。 您可以使用mysql复制,将主数据库作为主数据库,在第二个应用程序服务器中设置另一个mysql,并将其作为从属数据库。
第二台服务器的mysql与主服务器同步,所有写查询(更新、插入、删除等)都应转到主服务器。这将减少数据库负载。

您可以允许第二台主机访问第一台MySQL服务器。这样做的最佳实践(据我所知)是创建一个新的用户帐户,向其授予用户表所需的权限,仅允许从第二台主机的IP或域访问该帐户,并使用安全密码。您可以在MySQL服务器上运行此查询:

GRANT ALL ON mydatabase.users TO 'mynewuser'@'123.123.123.123'
    IDENTIFIED BY 'mysecurepassword';
不用说,您会将“mydatabase.users”替换为您的数据库和表名,“mynewuser”替换为您希望访问的用户的用户名(您可以在此处放置任何内容,用户将自动创建),“123.123.123”替换为您第二台服务器的IP或域名,“mysecurepassword”替换为良好且长的密码,最好是随机生成的

您的第二台服务器现在可以连接到MySQL服务器,并在mydatabase.users表上拥有
所有
权限(您可以将其更改为所需的任何权限)


为了最大限度地降低性能损失,我将避免创建多个MySQL连接(尝试使用尽可能少的连接,最好只使用一个)。我不是百分之百支持下面的内容,但我非常确定减少单独执行查询的数量也是一个好主意。不要运行10个单独的插入,而是使用多个
值运行一个插入,例如

INSERT INTO mytable(id, name) VALUES
    (0, 'mia'),
    (1,'tom'),
    (2,'carl');
我相信这对减少速度惩罚也会有相当大的帮助