lyhiving/mmodel 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

lyhiving/mmodel

Composer 安装命令:

composer require lyhiving/mmodel

包简介

PHP mini model.Fast MySQL select/insert/update/delete actions.

README 文档

README

php 小模型。

快速实现CRUD操作的小模型

普通版CRUD + 远程CRUD 用于快速开始项目

安装

使用 Composer

composer require lyhiving/mmodel

{
    "require": {
            "lyhiving/mmodel": "2.*"
    }
}

用法

  1. 本地使用
<?php

//引入autoload.php 
use lyhiving\mmodel\Mcache;
use lyhiving\mmodel\Mmodel;

//如果想使用文件缓存,请确保缓存文件的安全
// $cache = new Mcache('files', ['path' => __DIR__ . '/.cachemeta']);

//使用redis缓存
$cache = new Mcache('redis', [
    'host' => 'localhost', //Redis server
    'port' => 6379, //Redis port
    'password' => 'root', //Redis password
    'database' => 0 //Redis db
]);

//配置参数
$options = [
    // 'driver' => 'mysql',
    'host' => 'localhost',
    // 'port' => '3306',
    'username' => 'root',
    'password' => 'root',
    'dbname' => 'test',
    'prefix' => 'cloud_',
    // 'pconnect' => 1,
    'charset' => 'utf8mb4',
];

$model = new Mmodel($options);
//设置缓存
$model->set_cache($cache);
$model->quick('cms');
$data = $model->select(array('contentid' => 1));
var_dump($data);
  1. 远程使用

服务端:

<?php
//引入autoload.php 

use lyhiving\mmodel\Mcache;
use lyhiving\mmodel\Mmodel;
use Hprose\Http\Server;

//缓存
$cache = new Mcache('redis', [
    'host' => 'localhost',
    'port' => 6379,
    'password' => 'root',
    'database' => 0
]);

//配置
$options = [
    'driver' => 'mysql',
    'host' => 'localhost',
    'port' => '3306',
    'username' => 'root',
    'password' => 'root',
    'dbname' => 'test',
    'prefix' => 'cloud_',
    'pconnect' => 1,
    'charset' => 'utf8mb4',
];

$model = new Mmodel($options);
$model->set_cache($cache); 

$server = new Server();
$server->addInstanceMethods($model->db);
$server->setCrossDomainEnabled();
$server->start();

客户端:

<?php
//引入autoload.php 

use lyhiving\mmodel\Mcache;
use lyhiving\mmodel\Mmodel;

$options = [
    'driver' => 'rpc',
    'url' => 'http://localhost/mmodel/examples/server.php',
    'prefix' =>'cloud_'    //如果有设置前缀,一定要在配置注明
];


$model = new Mmodel($options);
$model->quick('cms');
$data = $model->select(array('contentid' => 1));
var_dump($data);

简单模板viewer的使用:

<?php
//引入autoload.php 

use lyhiving\mmodel\Mmodel;

//初始化指定路径
$template = Mmodel::template(['dir' => __DIR__ . '/templates/']);

//赋值方法一
$template->assign('time', time());

//赋值方法二
$template->assign(['time2'=>microtime(true)]);

$template->assign('data',[['id'=>1,'name'=>'name1'],['id'=>2,'name'=>'name2']]);

//选择模板
$template->display('demo');

关于远程调用的加密

目前先这样用,远程的地址复杂点就是了。

TODO: 看情况加入渐变验证组件。

关于缓存

缓存实际上使用了 phpfastcache, 一个很不错的缓存包。由于安全相关的问题,目前使用到V8.1.0版本,该版本要求PHP>=7.3, 希望可以兼容多点的PHP版本。

实际上如果非常轻便的开发,甚至连缓存都可以不用。

使用缓存的时候注意,如果更新了表结构需要清除缓存。如果不清,默认15分钟后缓存失效。

关于hprose

目前hprose的作者估计想升级到hprose3.0。但3.0使用的compsoser要求安装ext_hprose扩展,这个对于部分同学部署起来并不友好。因此我限制使用2.0.40的版本,该版本不需要安装相关的扩展。

啰嗦一句,其实Andot 弄这个hprose很久的了,我也很早的时候就用上了。多久?那个时候还叫PHPRPC的时候 :)

hprose支持很多语言,性能很很帅,可惜文档就是不给力。作者也是维护多语言版本,生态没弄好。希望hprose会好起来。

lyhiving/mmodel 适用场景与选型建议

lyhiving/mmodel 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 22 次下载、GitHub Stars 达 1, 最近一次更新时间为 2020 年 05 月 23 日, 在 PHP 生态内属于活跃度较高的组件。

它主要适用于以下技术方向: 「model」 「fast」 「quick」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。

我们在过去多个企业项目中使用过 lyhiving/mmodel 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。

围绕 lyhiving/mmodel 我们能提供哪些服务?
定制开发 / 二次开发

基于 lyhiving/mmodel 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

  • 总下载量: 22
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 2
  • 点击次数: 3
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 1
  • Watchers: 1
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2020-05-23