PHP Interview Questions(19)
常用的PHP 框架?
Yii 和 Laravel
怎么访问数据库?
ORM
怎么配置读写分离?
https://www.yiiframework.com/doc/guide/2.0/zh-cn/db-dao#read-write-splitting
[ 'class' => 'yii\db\Connection', // 主库的配置 'dsn' => 'dsn for master server', 'username' => 'master', 'password' => '', // 从库的通用配置 'slaveConfig' => [ 'username' => 'slave', 'password' => '', 'attributes' => [ // 使用一个更小的连接超时 PDO::ATTR_TIMEOUT => 10, ], ], // 从库的配置列表 'slaves' => [ ['dsn' => 'dsn for slave server 1'], ['dsn' => 'dsn for slave server 2'], ['dsn' => 'dsn for slave server 3'], ['dsn' => 'dsn for slave server 4'], ], ]
https://laravel.com/docs/7.x/database#read-and-write-connections
'mysql' => [ 'read' => [ 'host' => [ '192.168.1.1', '196.168.1.2', ], ], 'write' => [ 'host' => [ '196.168.1.3', ], ], 'sticky' => true, 'driver' => 'mysql', 'database' => 'database', 'username' => 'root', 'password' => '', 'charset' => 'utf8mb4', 'collation' => 'utf8mb4_unicode_ci', 'prefix' => '', ],
如果同时读和写,比如先查询数量、然后更新,会建立几个mysql连接?
开启事务:建立一个连接,所有的数据库操作都将使用主库连接。 不开启事务:建立两个连接,主库执行写操作,从库执行读操作。
分库分表怎么配置?比如 mod 10?
public static function getTableName(){ return static::$originalName . '_'. (static::$targetKey % 10); }
mysql 索引 根据什么原则建索引 省份有必要建索引吗?
1、较频繁的作为查询条件的字段应该创建索引 2、唯一性太差的字段不适合单独创建索引,即使频繁作为查询条件 3、更新非常频繁的字段不适合创建索引
redis 常用数据结构 队列 队列消费失败怎么办?
strings, hashes, lists, sets, sorted sets
登陆认证 (session/token/jwt)?
laravel passport