- 浏览: 58528 次
- 性别:
- 来自: 广州
最新评论
文章列表
建立一个支持并发的Laravel任务模块
- 博客分类:
- lumen
laravel/lumen的事件、任务调度等都是基于队列来实现的,但由于php是进程模式,除非部署第三方模块,否则无法像java那样通过创建线程来实现并发执行。这对于laravel来说实在非常不方便,只能一个任务执行完再执行下一个任务,效率极其低下,而且容易阻塞。但并发任务的需求又非常常见,下面就基于laravel自行实现一个并发任务模块。
1、要实现并发,就要先解决在PHP进程内创建新进程的问题。通过PHP本身是没有办法的,因此采用执行外部Shell脚本的方式启动新的PHP进程。但默认情况下,system、exec等方式执行shell时都是阻塞的,按网上文章说的用popen测试,也不成功。最 ...
在后台的路由中间件中要增加跨域设置:
namespace App\Http\Middleware;
//跨域中间件
class BeforeCorsMiddleware {
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, \Closure $next)
{
a ...
组件代码
<template>
<el-form-item label="验证">
<div class="form-inline-input">
<div class="code-box" id="code-box">
<input type="text" name="code" class="code-input" />
&l ...
lumen集成结巴分词
- 博客分类:
- lumen
常规的方法是通过compoer集成
composer require fukuball/jieba-php:dev-master
但有些时候(比如我的项目)comper一直都没法update成功,这时候可以用手动方式集成。
1、下载项目文件
git clone https://github.com/jonnywang/phpjieba.git
或者直接上github上打包下载文件
2、复制到文件
将src目录复制到目标项目的/vendor/fukuball/jieba-php
3、修改加载配置
修改bootstrap/app.php
require_once __ ...
这段代码是从网上抄的,唯一需要注意的是页面必须部署在Https网站下,否则Android手机可能由于安全原因定位失败。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=*******"></script>
<title>百度 ...
Fabric节点类型总结:
一、Peer节点
1)所有的Peer节点都是记账节点(Committeer),负责验证从排序服务节点区块里的交易,维护状态数据和账本的副本。
2)部分节点会执行交易并对结果进行签名背书,充当背书节点。背书节点是动态的角色,是与具体链码绑定的。(安装了具体链码的节点相对于这类链码即为背书节点)
3)还有一种角色是主节点(Leader Peer),代表的是和排序服务节点通信的节点,负责从排序服务节点处获取最新的区块并在组织内部同步。可以强制设置为主节点,也可以动态选举产生。
4)有的节点同时是背书节点和记账节点,也可以同时是背书节点、主节点和记账节点,也可以只是记账节点 ...
一、基本概念
1、有储备资产,可以成为普通意义上的货币
2、有独立的协会进行管理
3、面向各个国家
二、技术架构
1、不是纯粹的区块链,只是上面一层是区块链
2、性能不能支撑交易的并发量
三、libra如何保证币值稳定
1、 ...
Jboot通过ShardingJDBC实现分库分表,但是分库分表函数主要是通过字段值进行计算,但如果分库方式与数据无关,并且分库需要在运行时动态新增配置就无法满足要求。
下面是通过改造基本Model类,并动态配置数据源的方法:
1、新增数据源缓存类
注意,configName要使用线程本地类,JBoot非线程安全。
public class DataConfigName {
private static DataConfigName me;
@JSONField(serialize = false)
transient private ThreadLoc ...
Lumen/laravel动态分库的实现
- 博客分类:
- lumen
lumen默认支持多数据源,但如果系统存在多个结构相同的数据库实例,并根据某特定请求参数访问不同的实例,那么可以通过中间件实现动态配置。
1、在app/config/database.php文件中配置默认mysql数据库连接参数
2、在默认库中创建一个配置表,其中保存各数据库分库的配置,如下表(以corpid做分库条件),这个表只需要在主库中创建并维护
引用
CREATE TABLE `corp_database` (
`corpid` varchar(50) NOT NULL DEFAULT '' COMMENT '租户id',
`read_host` varchar(100) NO ...
微信支付的接入申请有个很大的坑。
在申请APP支付功能时,需要在开放平台新增应用,新增成功后会自动产生一个APPID,还会重置APPSecret,但这个AppSecret并没有什么鸟用,它是不能用于产生统一下单接口的签名的。
真正用于签名的密钥是API密钥。而这个密钥是需要在“商户平台--账户中心--API安全”中进行设置,这个密钥是可以自己设定的。
总结起来就是发起统一订单接口的三个参数的来源:
AppID:开放平台
商户ID:商户平台
APISecret:商户平台
由于支付宝SDK只支持php7.1,因为需要删除之前安装的7.2版,进行降级。通过yum remove不能完全删除php,必须通过rpm方式卸载。由于php安装模块间有依赖,因此需要按顺序进行卸载。如下:
rpm -e php72w-fpm-7.2.13-1.w7.x86_64
rpm -e php72w-mysqlnd-7.2.13-1.w7.x86_64
rpm -e php72w-pecl-redis-3.1.6-1.w7.x86_64
rpm -e php72w-pecl-igbinary-2.0.5-1.w7.x86_64
rpm -e php72w-pdo-7.2.13 ...
前提:使用Eloquent访问mongodb
class ResourceModel extends Eloquent
{
protected $collection = 'resource';
protected $connection = 'mongodb';
}
1、新增
class ResourceService extends BaseService
{
private $collection;
private $resourceModel;
public function __construct()
{
parent: ...
lumen5.5使用rabbitmq
- 博客分类:
- lumen
在composer.json中的require中增加以下语句
"php-amqplib/php-amqplib":"2.6.*",
"vladimir-yuldashev/laravel-queue-rabbitmq": "5.5"
然后执行
composer update
如果要在lumen中通过shell调用rabbitmq的命令,需要将php执行用户添加到/etc/sudoers文件中,并且修改后需要把文件置为只读,否则会抛出警告信息。
执行语句如下:
$cmd = 'sudo rabbitmq ...
1. 安装mongodb扩展
执行sudo pecl install mongodb
如果是windows,到https://windows.php.net/downloads/pecl/releases/mongodb/选择对应的版本下载,并把php_mongodb.dll复制到php的ext目录
2. 配置扩展
在php.ini中增加以下语句
extension=mongodb.so
3. 在lumen中引入mongodb驱动
在composer文件添加"jenssegers/mongodb": "3.4.5",然后执行
compo ...
lumen是laravel的简化版,其中artisan部分删除了大部分的command,无法按laravel方式创建自定义的artisan命令。但仍然可以按以下方式创建:
1、在app/Console/Kernel.php文件中声明要创建类
protected $commands = [
Commands\SomeClass1::class,
Commands\SomeClass2::class,
]
2、在app/Console/Commands目录中创建对应的类。必须在里面声明命令$signature和handle方法
namespace App\Conso ...