Soporte de división horizontal DB con FuelPHP

Es K de la oficina de Sapporo.

Tradicionalmente, la creación de un sistema de servidor (entorno LAMP) se centró en el desarrollo de su propio marco, pero en los últimos años se utilizan más y más marcos de código abierto.

El marco interno no es malo, pero si es un marco de código abierto, creo que será fácil asumir el control de las operaciones de otra compañía o si lo está desarrollando en reversa y manejando operaciones a otra compañía.

Por lo tanto, me gustaría escribir un Consejos sobre la base de datos que no tengo cuidado acerca de FuelPHP que escuché que esta vez se está utilizando ampliamente en juegos sociales y otros desarrollos.

* Para obtener detalles sobre qué tipo de muslos es FuelPHP, consulte el documento japonés.

(Documento japonés FuelPHP)http://fuelphp.jp/

 

■ Ambiente creado esta vez.

Esta vez, realizamos la verificación en el siguiente entorno.

Apache 2.2.22

PHP 5.4.44

mysql 5.5.44,

Combustible PHP 1.7.3

Aunque se denomina entorno de examen interno vacante, la versión de PHP es un poco antigua, pero FuelPHP lo respalda.

Por cierto, la última versión de lanzamiento de FuelPHP es 1.8, ¡y también es compatible con PHP 7!

Me gustaría subir cualquier informe allí también.

 

Consejos!

■ Soporte para la partición horizontal de la tabla DB

La partición horizontal de las tablas de la base de datos es un método efectivo para equilibrar la carga en juegos sociales.

Sin embargo, la división horizontal correspondiente a FuelPHP inesperadamente no tiene información, y debe ser manipulada para hacerlo.

Aunque FuelPHP tiene la función de separar el DB en maestro y esclavo, el procesamiento en el caso de dispersar horizontalmente la tabla no se tiene en cuenta y no se pueden encontrar buenas muestras.

 

Por lo tanto, creamos un modelo que amplía el modelo ORM existente y decidimos seleccionar una tabla según las condiciones.

Para cada proceso y clase de modelo hijo, este modelo de extensión se hereda y se utiliza. (Este es un procedimiento ordinario ..)

 

En este mecanismo, hicimos las siguientes cosas.

· Crear una conexión que invalida la clase de conexión,

Entre ellos, la tabla se selecciona en función de la regla de división.

· Preparar la clase para la herencia no para dividir para la tabla dividida,

Hacer ajustes de división.

· Las clases de tabla individuales heredan la clase de herencia anterior y hacen varias cosas.

 

Escribirlo me hace sentir un poco complicado, pero será casi como sigue.

fig001

Por ejemplo, si lo encuentra, en realidad significa que es un mecanismo para actualizar su propia clase en Query :: forge, por lo que está bien.

Cuando la clase se genera automáticamente con Scaffold, etc., se debe volver a escribir.

 

En nuestra empresa, preparamos una tabla con destinos distribuidos y accedemos a ella desde una tabla obtenida por cada usuario (en _ 0, etc.). Creo que esta área es parte del diseño.

 

■ vagabundo cosas

La configuración del archivo de configuración PHP de combustible se describió como copiada desde el núcleo y reescrita, se adoptará la que después de reescritura,

Bajo el entorno que no sea Desarrollo, encontramos que la configuración bajo el núcleo se mantendrá.

Por lo tanto, en el archivo de configuración que copié esta vez, configuré con mysqli, pero en cuanto cambié el entorno a producción, ¡es un error! !

Como resultado del examen, fue un error porque la configuración predeterminada del núcleo era pdo.

 

Dado que FuelPHP frecuentemente reescribe el núcleo, parece necesario tener cuidado.

 

Impresion

Sentí que FuelPHP es fácil de usar y un marco relajado, pero como también requiere cierta capacidad de lectura, pensé que sería mejor personalizarlo y usarlo bien.

En el futuro, me gustaría tocar varias cosas, así como FuelPHP.