script多条件 php,GitHub - xietianliao/hello-script: PHP 多进程脚本框架

Hello-Script

PHP 脚本框架

学习交流qq群:271818784

安装

git clone https://github.com/fan3750060/hello-script.git

运行命令

php script

╔╗╔╗ ╔╦╗ ╔══╗ ╔╗

║╚╝╠═╣║╠═╗║══╬═╦╦╬╬═╦══╗

║╔╗║╩╣║║║║╠══║╠╣╔╣║║╠╗╔╝

╚╝╚╩═╩╩╩═╝╚══╩═╩╝╚╣╔╝╚╝

╚╝

The program run successfully

When you want to execute a script, be sure to have parameters and use '/' split controllers and methods!

Example: php script Index/run param1 param2 param3 ...

Version: 0.2.1

Author : fan3750060@163.com

目录结构

|--app程序目录

│-----... (自定义脚本)

|--config 配置目录

│--------config.php 一般配置文件

│--------database.php 数据库配置文件

|--core框架核心目录

│------db数据操作目录

│--------FileCache.php 文件缓存操作类

│--------Memcache.php Memcache操作类

│--------Mypdo.php Mysql操作类

│--------Redis.php Redis操作类

│------filter参数过滤目录(未来弃用)

│------------Filter.php 参数过滤类

│------lib类库目录

│---------Cache.php 缓存操作类

│---------Cookie.php Cookie操作类(未来考虑弃用)

│---------Respones.php 输出类(未来弃用)

│---------Session.php Session操作类(未来考虑弃用)

│------query 数据执行操作类库

│-----------DB.php sql快捷操作类

│------App.php 框架运行文件

│------Base.php 框架基础文件

│------Common.php 函数助手公共方法文件

│------Config.php 框架配置文件

│------Loader.php 框架自动加载文件

│------Route.php 框架路由文件

│------Test.php 框架版本(测试运行)文件

│------Work.php 框架多进程文件

|--runtime 框架运行时目录

│---------... (可配置缓存储存点)

│--vendor 第三方类库目录(Composer)

|--script 脚本入口文件

运行说明

php script 控制器/方法 参数1 参数2 参数3

PS:

控制器必须在app目录下建立,控制器文件名须与类名一致

命令参数使用函数 input() 接收

多进程控制

多进程依赖php的pcntl扩展,在windows下无法使用

# 通过pecl安装pcntl扩展

sudo pecl install pcntl

# 增加 extension=pcntl.so

sodo vim /etc/php.ini

# 检查扩展是否安装成功

php -m | grep pcntl

代码

use core\Work;

public function process()

{

//总进程的数量

$totals = 5;

// 执行的脚本数量

$param = array();

// 执行的脚本数量的数组

for ($i = 0; $i < $totals; $i++)

{

$param[] = ['controller' =>'Index','action'=>'run','param'=>['pid'=>$i,'total' => $totals]];

}

Work::run($param);

}

执行命令:

php script Index/process

PS:

controller 脚本控制器

action 脚本执行方法

param 脚本传输参数

单进程控制

public function run($param=null)

{

Do something...

}

执行命令:

php script Index/run

DB操作示例

use core\query\DB;

说明

DB::table('表名','库名')

PS: 库名非必填,默认数据库在 database.php 的 database 中配置

单条查询

$result = DB::table('表名')->find();

调试模式

$where = [];

$result = DB::table('表名')->where($where)->debug()->find(); //返回sql

join连表查询

$where = [];

$result = DB::table('表名1')

->alias('a')

->join('表名2 b','a.id = b.docid','left')

->where($where)

->find();//两表查询

$join = [

['表名2 b','a.id = b.docid','left'],

['表名3 c','b.docid = c.apiid','left'],

];

$result = DB::table('表名1')->alias('a')->join($join)->find(); //三表查询

union查询

$union = array(

'select * from 表1',

'select * from 表2',

);

$result = DB::table('表3')->alias('a')->union($union)->find(); //多表联合

多条查询

$where = array();

$where['sex'] = 1;

$order = array();

$order['id'] = 'desc';

$order['sex'] = 'asc';

$limit = [0,10];

$group = ['id','sex'];

$result = DB::table('表名')->where($where)->limit($limit)->select();

插入数据

$data = array();

$data['name'] = 'update33233';

$data['sex'] = 1;

$result = DB::table('表名')->insert($data); //单条插入(一维数组)

$data = array();

$data = [

[

'name' => 'update33233',

'sex' => 1,

],

[

'name' => 'update1111',

'sex' => 2,

],

];

$result = DB::table('表名')->insert($data); //批量多条插入(二维数组)

更新及事务

$data = array();

$data['name'] = 'update222';

$data['sex'] = 1;

$data['id'] = 42;

$bbb = array();

$bbb[] = $data;

DB::Transaction();//开启事务

$result = DB::table('表名')->update($bbb);

if($result)

{

DB::Commit();

}else{

DB::Rollback();

}

删除

$result = DB::table('表名')->delete(主键id); //根据主键id删除

$where = [];

$where['id'] = 1;

$result = DB::table('表名')->where($where)->delete(); //根据条件删除

缓存操作

use core\lib\Cache;

Cache::drive() 默认为file缓存

set: 设置缓存 参数1:缓存键名 参数2:数据 参数3:持续时间缓存值将过期的秒数,0表示永不过期

get: 获取缓存 参数1:缓存键名 如果值不在缓存中,则返回false

has: 是否存在 参数1:缓存键名 如果值不在缓存中,则返回false

delete: 删除缓存 参数1:缓存键名 成功返回true,失败返回false

文件缓存

$a = Cache::drive()->set('key',[1,2,3],10);

$b = Cache::drive()->get('key');

$c = Cache::drive()->has('key');

$d = Cache::drive()->delete('key');

memcache缓存

$a = Cache::drive('memcache')->set('key',[1,2,3],30);

$b = Cache::drive('memcache')->get('key');

$c = Cache::drive('memcache')->has('key');

$d = Cache::drive('memcache')->delete('key');

redis缓存

$a = Cache::drive('redis')->set('key',[1,2,3],30);

$b = Cache::drive('redis')->get('key');

$c = Cache::drive('redis')->has('key');

$d = Cache::drive('redis')->delete('key');

命令行参数接收

命令:

php script Index/process 213 123 2312

接收:

input()

var_dump(input()); //返回数组

读取配置文件

$a = config(); //获取全部配置

$b = config('cache'); //根据keyh获取配置

引入类包

import('目录','文件名','类名'); //第三个参数存在返回类对象,不存在引入文件

例子:

import(VENDOR.'memq','QMC'); //引入文件

import(VENDOR.'memq','QMC','QMC'); //返回对象

运行输出

echolog(); //可打印数组

帮助命令

列出app中脚本: php script --list

其他

use core\lib\Session;

session操作方法(将来或将弃用)

$a = Session::boot()->set('key',[1,2,3]);

$b = Session::boot()->get('key');

$c = Session::boot()->delete('key');

$d = Session::boot()->clear();

$e = Session::boot()->all();

session辅助函数(将来或将弃用)

$a = session('key',[1,2,3]);

$b = session('key');

$c = session();

$d = session('');

$e = session('key','');

$f = session('key',null);

use core\lib\Cookie;

cookie方法(将来或将弃用)

$a = Cookie::boot()->set('key',[1,2,3]);

$b = Cookie::boot()->get('key');

$d = Cookie::boot()->all();

$c = Cookie::boot()->delete('key');

$e = Cookie::boot()->clear();

cookie辅助函数(将来或将弃用)

$a = cookie('key',123,20);

$b = cookie('key');

$c = cookie();

$d = cookie('');

$e = cookie('key','');

$f = cookie('key',null);

}

PS:

数据操作类及缓存类有借鉴TP操作方式

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值