如果你满足以下条件:
那就不要犹豫,不要怀疑,佳优框架(SwooleYaf)就是你的理想选择,使用该框架,你轻易做到以下事情:
SwooleYaf是PHP语言的高性能分布式微服务框架,专注于restful api接口开发,也可适用于前后端分离架构设计下服务端渲染模式的前端项目开发
正式生产环境api接口耗时截图:
除了少部分非常耗时的接口,大部分接口的平均耗时在20毫秒内,相当多的接口耗时甚至在10毫秒内
讲解视频链接:https://pan.baidu.com/s/1lwt9hConr8cbVKRxLsltdw 提取码:mqzb
请移步至项目 https://github.com/a07061625/swooleyaf_install.git
复制helper_load_example.php为helper_load.php并修改相关配置 其中:
复制helper_php_example.php为helper_php.php并修改相关配置
复制config_projects_example.php为config_projects.php并修改相关配置 其中:
注1: 如果想要运行多个swoole服务,listens数组添加多个并保证端口不冲突即可
/usr/local/php7/bin/php helper_service_manager.php -s start-all
/usr/local/php7/bin/php helper_service_manager.php -s stop-all
/usr/local/php7/bin/php helper_service_manager.php -s restart-all
/usr/local/php7/bin/php helper_service_manager.php -s kz-all
/usr/local/php7/bin/php helper_mysql.php -h
/usr/local/php7/bin/php helper_nginx.php -h
请求地址: http://api.xxx.com/0000
请求地址: http://api.xxx.com/0001
系统配置:
nginx配置:
压测结果:
// ip:当前服务器内网或外网ip port:服务监听端口,默认为2379
nohup etcd --listen-client-urls http://ip:port --advertise-client-urls http://ip:port >/dev/null &
https://docs.mongodb.com/php-library/
http://blog.csdn.net/why_2012_gogo/article/details/51170609
参考demo_xhprof.php文件
善用观察者模式来实现业务代码解耦,具体可参考邮件发送模块
请求地址带上签名参数,统一只在api模块做签名校验,签名参数如下:
说明:
/**
* 登录
* @SyAspect-\SyAspect\Demo
*/
public function loginAction()
/**
* 登录
* @SyAspectBefore-\SyAspect\Demo
*/
public function loginAction()
/**
* 登录
* @SyAspectAfter-\SyAspect\Demo
*/
public function loginAction()
$handlerType = \SyConstant\Project::MESSAGE_HANDLER_TYPE_SMS_DAYU;
$queueType = \SyConstant\Project::MESSAGE_QUEUE_TYPE_REDIS;
//具体的数据格式请参考对应消息生产者的checkMsgData方法,对应的命名空间为\SyMessageHandler\Producers
$data = [
'receivers' => [
'12233334444'
],
'template_id' => 'test11233',
'template_sign' => '签名测试',
'template_params' => [
'code' => '123456'
],
];
$addRes = \DesignPatterns\Singletons\MessageHandlerSingleton::getInstance()->addMsgData($handlerType, $data, $queueType);
//将addRes的数据添加到数据库中,其中msg_id为消息ID,可作为消息处理记录的主键,方便后续查看消息处理的记录以及修改消息处理结果
$queueType = \SyConstant\Project::MESSAGE_QUEUE_TYPE_REDIS;
$msgData = \DesignPatterns\Singletons\MessageHandlerSingleton::getInstance()->getMsgData($queueType);
if (!empty($msgData)) {
try{
$handlerRes = \DesignPatterns\Singletons\MessageHandlerSingleton::getInstance()->invokeMsg($msgData);
} catch (Exception $e) {
\SyLog\Log::error($e->getMessage(), $e->getCode(), $e->getTraceAsString());
$handlerRes = [
'code' => 9999,
'msg' => $e->getMessage(),
];
}
//通过msgData的msg_id和handlerRes,修改消息处理记录的处理结果
}
修改libs_project/SyTrait/BloomTrait的initFilters方法,可参考现有代码自行初始化好所有的过滤器
$cacheKey = 'test1234';
\DesignPatterns\Factories\CacheSimpleFactory::getRedisInstance()->set($cacheKey, 123);
\DesignPatterns\Singletons\BloomSingleton::getInstance()->addKey('a01', $cacheKey);
$cacheKey = 'test1234';
$existTag = \DesignPatterns\Singletons\BloomSingleton::getInstance()->existKey('a01', $cacheKey);
if ($existTag) {
$cacheVal = \DesignPatterns\Factories\CacheSimpleFactory::getRedisInstance()->get($cacheKey);
} else {
echo '非法键名';
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。
1. 开源生态
2. 协作、人、软件
3. 评估模型