首页
Search
1
解决 docker run 报错 oci runtime error
49,385 阅读
2
WebStorm2025最新激活码
27,669 阅读
3
互点群、互助群、微信互助群
22,785 阅读
4
常用正则表达式
21,570 阅读
5
罗技鼠标logic g102驱动程序lghub_installer百度云下载windows LIGHTSYNC
19,475 阅读
自习室
CODER
课程
SEO
学习视频
手册资料
呆萌
工具软件
运维
DBA
互通有无
资源
微信群
激活工具
搞钱日记
养生记
包罗万象
Search
标签搜索
DeepSeek
学习指北
Prompt
提示词
Loong
累计撰写
182
篇文章
累计收到
0
条评论
首页
栏目
自习室
CODER
课程
SEO
学习视频
手册资料
呆萌
工具软件
运维
DBA
互通有无
资源
微信群
激活工具
搞钱日记
养生记
包罗万象
页面
搜索到
182
篇与
的结果
2019-08-26
PHP获取服务器状态
PHP获取服务器状态:<?php function get_server_status() { $fp = popen('top -b -n 2 | grep -E "^(Cpu|Mem|Tasks)"', "r");//获取某一时刻系统cpu和内存使用情况 $rs = ""; while (!feof($fp)) { $rs .= fread($fp, 1024); } pclose($fp); $sys_info = explode("\n", $rs); $tast_info = explode(",", $sys_info[3]);//进程 数组 $cpu_info = explode(",", $sys_info[4]); //CPU占有量 数组 $mem_info = explode(",", $sys_info[5]); //内存占有量 数组 //正在运行的进程数 $tast_running = trim(trim($tast_info[1], 'running')); //CPU占有量 $cpu_usage = trim(trim($cpu_info[0], 'Cpu(s): '), '%us'); //百分比 //内存占有量 $mem_total = trim(trim($mem_info[0], 'Mem: '), 'k total'); $mem_used = trim($mem_info[1], 'k used'); $mem_usage = round(100 * intval($mem_used) / intval($mem_total), 2); //百分比 /*硬盘使用率 begin*/ $fp = popen('df -lh | grep -E "^(/)"', "r"); $rs = fread($fp, 1024); pclose($fp); $rs = preg_replace("/\s{2,}/", ' ', $rs); //把多个空格换成 “_” $hd = explode(" ", $rs); $hd_avail = trim($hd[3], 'G'); //磁盘可用空间大小 单位G $hd_usage = trim($hd[4], '%'); //挂载点 百分比 /*硬盘使用率 end*/ //检测时间 $fp = popen("date +\"%Y-%m-%d %H:%M\"", "r"); $rs = fread($fp, 1024); pclose($fp); $detection_time = trim($rs); return array( 'cpu_usage' => $cpu_usage, 'mem_usage' => $mem_usage, 'hd_avail' => $hd_avail, 'hd_usage' => $hd_usage, 'tast_running' => $tast_running, 'detection_time' => $detection_time ); }
2019年08月26日
3,843 阅读
0 评论
2 点赞
2019-08-26
下单与支付流程的两种设计方案
两种方案两个分开事务过程 通常是创建订单,再支付,这适用于在线支付(第三方在线支付),可以先创建订单,可以此后再选择订单去支付。同一个事务内 另一种直接扣余额的订单(不支持第三方在线支付),其实可以创建订单和支付用一步就可以,订单生成就意味着支付了,只有成功支付才会生成订单,下单和支付放在一个事物内了。订单与支付 一般情况下,请求一次支付会创建一个订单,如果没支付的订单就不显示而已,这是为了,让创建订单和支付像是一步一样,简化了流程,其实实际情况不是用户感知到这样的,只不过没支付的订单,没必要显示给用户而已。 用户感知不到会创建订单,比如充值,购买会员等,用户感知不到这些操作会创建订单,但实际上是创建了订单的,这和商品订单有所不同。 但是有时创建订单和支付也可以一步完成,比如只规定使用余额支付的订单,就可以创建订单和支付为一步原子操作。
2019年08月26日
6,709 阅读
0 评论
78 点赞
2019-08-26
foreach使用引用时需要注意的问题
foreach ($car['cartList'] as &$shop) { } // 这里不释放会影响下面的$shop ,因为引用无法再正常使用 unset($shop); // 这里下面的循环$shop无法正常工作,因为上面$shop成为引用了 foreach ($car['cartList'] as $shop) { }&$item 要特别注意,遍历完必须马上 unset 否则就是一颗炸弹,对业务造成威胁,这种造成的业务错误往往很难排查! 所以不关紧要的变量需要提早释放,这是一个好的习惯,必须严格遵守,不是因为获得最大性能,而是因为可以减少这种难以预见,将来潜在的错误。
2019年08月26日
5,374 阅读
0 评论
16 点赞
2019-08-25
PHP数组与数据结构
数组是PHP中一个灰常、灰常、灰常重要的一个数据类型。因为他涉及到的知识点太多,太杂,我们的讲解是在数组类型部份告诉了大家一个大概,然后专门用一个章节来跟大家讲解。学习数组,大家主要学习两部分的知识:数组的定义,定义中的一些注意的坑数组的函数使用和(默写)又是默写级别的数组在之前我们让大家记住两个观点:数组可以存入多个不同类型的数据,是一个复合数据类型。数组的英文是array,学一下最简单的数组声明。那我们来进行简单的回顾:<?php $shu = array(1 , 1.5 , true ,'天王盖地虎,小鸡炖蘑菇'); echo '<pre>'; var_dump($shu); echo '</pre>'; ?>在上例中,我们发现我们存入了:整型浮点布尔字符串注:上例中echo pre这个标签的主要目的是为原样输出,格式展示的更好看,更清晰。我们用var_dump()打印出来显示看一下效果:我们仔细观察一下上面的这张图,你会发现以下几个特点:array(size = 4) 说明里面有4个元素0 => int 1 我们知道int是整型的意思,1是一个整型的数值。那前面的0,1,2,3和=>代表什么意思呢?最新前的0,1,2,3代表的是值的读取标识号,我们称之为下标或者键(英文:key)=> 是一个符号标准叫法叫作:键值对应符。因此,以后再看到 0=> int 1 可以这样来说。 下标访问符0对应整型的1。我们还称数组里面的键值对为元素,元素就是键值对的组合。哦耶! 数组好像还挺好学的,全是一些规律哟。我们通过上例,其实你一不小心的就完成了数组其中的一种声明方式:索引数组的声明哟。所谓索引数组:就是下标全为整型的数组。索引数组的下标必须要从0开始吗?答:这个问题其实不然,索引数组并不一定要从0开始。那如何能够不从0开始呢?答:需要用到大家在上面学的一小块知识哟。就是键值对应符。我们来动手写写。<?php $kele = array('只有不断努力才能博得未来',10 => 'NoAlike', 'PHP学院' , '去PHP学院去PHP', 19 => '凤姐和芙蓉我都爱' , '杨幂臭脚我最爱'); //打印显示$kele echo '<pre>'; var_dump($kele); echo '</pre>'; ?>上例中,我们一不小心就写了一个索引数组。不过索引数组的下标不是从0 开始的,而是从10开始的。不过上面的例子中,我们觉得写的不优美,我们可以将代码写的更加优美一些,格式更加清晰一些。<?php $kele = array( '只有不断努力才能博得未来', 10 => 'NoAlike', 'PHP学院' , '去PHP学院去PHP', 19 => '凤姐和芙蓉我都爱' , '杨幂臭脚我最爱' ); //打印显示$kele echo '<pre>'; var_dump($kele); echo '</pre>'; ?>这样是不是看得更清楚,一行对应一个数组的值。我们执行一下代码,看一下效果:通过上面的效果,我们来总结规律:索引数组若不强制声明他的下标,他的下标是从0开始的。(我们的第一个数组的值:只有不断努力才能博得未来。这个值的下标为0)。如果我指定过下标他的下标就为我指定的值。如下标为10和下标为19的,都是我指定过的值。若某个值(如NoAlike),强制指定了下标(下标为10)。在它后面加上的值(PHP学院),不指定下标的话。他们的下标增长规律为最大值+1。例如:凤姐和芙蓉我都爱的下标为19.我在后面加上了:杨幂臭脚我最爱。它的下标自动增长为了11。不知不觉,你已经学会了索引数组的创建,神奇吧?真为你感到高兴!###向索引数组中增加元素学习完了索引数组的创建,接下来我们学习索引数组的增加、修改和删除。<?php $minren = array( '杨幂', '王珞丹', '刘亦菲', '黄圣依' ); //如何向这$minren这个数组中增加元素呢 //猜猜范冰冰的下标是多少? $minren[] = '范冰冰'; $minren[100] = '范爷'; //它的下标又为几呢? $minren[] = '李晨'; ?>总结:向索引数组中增加元素用: 数组变量名[]、数组变量名[键值]这两种方式来增加元素键值的增长规则与之前的规则一样。都是最大值加1的原则。###向索引数组中删除元素我们还拿刚刚的数组来举例:<?php $minren = array( '杨幂', '王珞丹', '刘亦菲', '黄圣依', '范冰冰' ); //假设我不喜欢:黄圣依,如何将黄圣依给删掉掉呢? //如果删除掉后范冰冰的下标为多少呢? //如果在后面再追加一个元素,会填掉:“黄圣依”留下来的空吗? unset($minren[3]); $minren[] = '金星'; echo '<pre>'; var_dump($minren); echo '</pre>'; ?>看看效果:使用unset删除变量的方式来删除数组里面的值。删除了中间的值,并不会让后面的下标向前自动移动。而是原来的值为多少就为多少删除掉其中的某个值,新加入的值不会替换掉原来的位置,依然遵循最大值加1的原则。修改值我们学习最简单的创造、增加和删除。我相信大家一定能够推理出如何修改值了。<?php $minren = array( '杨幂', '王珞丹', '刘亦菲', '黄圣依', '范冰冰' ); $minren[5] = '范爷'; $minren[2] = '亦菲,不要架给韩国人好吗?'; echo '<pre>'; var_dump($minren); echo '</pre>'; ?>执行上面的代码,输出看看结果。1.用变量名[键] = 新值。就把数组中的值定的值修改了。索引数组的其他声明方式通过上面的例子,我们学习到了数组的声明。我们来学一下数组的其他声明方式。####一、直接用之前未声明的变量,用变量名后面接中括号的方式声明数组。<?php //直接写一个变量后面加上中括号,声明变量 $qi[] = '可口可乐'; $qi[10] ='百事'; echo '<pre>'; var_dump($qi); echo '</pre>'; ?>####二、每次用array()写的太麻烦了,还可以不用写array哟,更简单。<?php $minren = [ '杨幂', '王珞丹', 100 => '刘亦菲', '黄圣依', '范冰冰' ]; echo '<pre>'; var_dump($minren); echo '</pre>'; ?>上面是另外两种PHP学院的写法。当然,你自己喜欢使用哪一种就使用哪一种来声明。###关联数组索引数组适当的变一下形就出现了关联数组。只要数组里面有一个为字符串的数组,就为关联数组。通过上例中,我们发现数组的下标只能够为字符串,当然不能够满足我的需求。假设我想声明一个下标为帅对应李文凯这个值。肯定不能满足我的需求。那我们来声明一下关联数组。跟索引数组的声明方式完成一样。不过不同的是,必须要指定字符串的下标和必须要使用键值对应符。<?php //声明一下关联数组 $rela = array( '帅' => '李文凯', '很帅' => '黄晓明', '灰常灰常帅' => '宁泽涛', '有男人味的大叔' => '吴秀波', ); //再来玩玩简洁声明 $drink = [ '美' => '凤姐', '很美' => '芙蓉姐姐', 'verymei' => '杨幂', '心中滴女神呀' => '华妃', 100 => '孙俪', '娘娘', ]; // 输出 $rela echo '<pre>'; var_dump($rela); echo '</pre>'; // 输出$drink echo '<pre>'; var_dump($drink); echo '</pre>'; ?>我们来实验一下看看最终的结果是什么样的:我们通过实验知道:声明关联数组是 键名 => 值在关联数组可以有索引数组的元素关联数组中的索引数组的元素后再声明了无下标的元素,依然是最大值+1原则。(观察上图中的值为孙俪、娘娘的两个元素)。###关联数组的增、删、改<?php $drink = [ '美' => '凤姐', '很美' => '芙蓉姐姐', 'verymei' => '杨幂', '心中滴女神呀' => '华妃', 100 => '孙俪', '娘娘', ]; //追加方式与索引数组是一样的 $drink['kx'] = '康熙'; //输出试试 echo '<pre>'; var_dump($drink); echo '</pre>'; //删除一个试试 unset($drink['verymei']); echo '<pre>'; var_dump($drink); echo '</pre>'; //将芙蓉姐姐 改成:心里美才是真的美 $drink['很美'] = '心里美才是真的美'; echo '<pre>'; var_dump($drink); echo '</pre>'; ?>你动手做做刚刚的实验,你会发现操作方式与索引的操作方式一样。只不过下标在读取的时候读取的下标PHP学院了。####其他的关联数组声明方式<?php $drink['nf'] = '农夫山泉'; $cocacola = '可口可乐'; //当然可以是变量哟 $drink['kl'] = $cocacola; $data = array( 'kl' => $cocacola, ); ?>通过上例我们发现,在关联数组当中也是可以不用array,直接在变量后面接括号。括号里面插入字符串下标,一样也声明成功。后面插入变量的例子,只不过把字符串变成了变量,当然没有问题。###数组当中插入数组数组可以插入整型、浮点、字符串,那么数组当中可不可以插入数组呢?当然可以。在学习数组的时候,我们定义了这样一组名词。一维数组 数组里面没有其他数组,只有单纯的一些变量或者值。二维数组 数组里面插入了单层的一个数组,或者多个数组三维数组 在数组(A)里面插入了一个数组(B),在B数组里面又插入了一层级的数组(C),这种我们就称为三维数组超过三维的,统统都叫多维数组。注:索引数组和关联数组当中都可以再插入其他数组,让数组变为多维的。我们来声明一个一维数组,只有一个维度。索引、关联均可,这个操作大家都很熟。<?php //一维的索引数组 $data = [1 , 2 , 3 , 4 , 10 => 250]; //一维的关联数组 $rela = [ 'beijing' => '北京', 'shanghai' => '上海', 'tj' => '天津', ]; ?> echo '<pre>'; var_dump($rela); echo '</pre>'; echo '<pre>'; var_dump($data); echo '</pre>';一维数组大家很熟悉,也不难,就是声明数组嘛。二维也不难,只是在数组里面再插一个或多个数组。二维学好了,多维就学好了。<?php $person = array( 'office' => '办公室', //注意:插入第一个数组哟 'family' => array( '爸爸', '妈妈', 'yeye' => '爷爷', 'nn' => '奶奶', ), //注意:又插入了一个平级的数组 'jiaotong' => array( '自行车', '摩托车', '汽车', '飞机', ), ); echo '<pre>'; var_dump($person); echo '</pre>'; ?>我们执行一下看看效果:我们发现变量person 是一个数组类型。有三个元素(size=3)。第一个元素为 office 对应的是一个字符串“办公室”,第二个元素为family 里面是一个数组,这个数组又有4个元素,值分别为:爸爸、妈妈、爷爷、奶奶。第三个元素为jiaotong,里面也为一个数组有4个元素,值分别为:自行车、摩托车、汽车、飞机。好了,二维数组好声明,只要把格式写对了,确定是在一个数组里面再插入一个数组就好。那如何访问:爷爷和爸爸这两个值呢?<?php $person = [ 'office' => '办公室', //注意:插入第一个数组哟 'family' => [ '爸爸', '妈妈', 'yeye' => '爷爷', 'nn' => '奶奶', ], //注意:又插入了一个平级的数组 'jiaotong' => [ '自行车', '摩托车', '汽车', '飞机', ], ]; //访问“爸爸”这什值 echo $person['family'][0]; echo '<br />-----华丽丽的分割线------<br />'; //访问“爷爷”这什值 echo $person['family']['yeye']; echo '<br />-----华丽丽的分割线------<br />'; //访问“汽车”这什值 echo $person['jiaotong'][2]; ?>我们看看结果如下:上例大家会发现,访问二维数组不过是按照之前的下标读取方式依次向下读取即可。先写上变量,中括号写上family这个下标,再写上要访问元素的下标。三维数组我们说了概念,那我们直接上手实验看看效果:<?php $area = array( 'china' => array( '上海', '湖北', '天津', '北京' => array( 'hd' => '海淀', '朝阳', '房山', 'cp' => '昌平', ), '广东' => array( '深圳', '广州', '佛山', 'dg' => '东莞', ), ), 'usa' => array( '华盛顿', '旧金山', '纽约' => array( '曼哈顿区', '皇后区', '布鲁克林区', ), ), ); echo '<pre>'; var_dump($area); echo '</pre>'; ?>我们执行一下看看效果:说明:在变量$area下有二个数组,一个为china,一个为usa。在china这个数组里面插入了上海、湖北、天津,又插入了北京和广东。而北京和广东又是一个数组。在北京和广东这两个数组里面分别有不同的元素。在这usa 这个数组里面插美国的华盛顿、旧金山和纽约。而纽约下面又是一个数组,说明了纽约下面的几个区。所以说,三维数组就是在数组里面再插入一个数组(A),在A数组里面插入一个数组。我们接下来看看,如何来读取里面的值。<?php $area = array( 'china' => array( '上海', '湖北', '天津', '北京' => array( 'hd' => '海淀', '朝阳', '房山', 'cp' => '昌平', ), '广东' => array( '深圳', '广州', '佛山', 'dg' => '东莞', ), ), 'usa' => array( '华盛顿', '旧金山', '纽约' => array( '曼哈顿区', '皇后区', '布鲁克林区', ), ), ); //读取华盛顿 echo $area['usa']['0']; //读取:布鲁克林 echo $area['usa']['纽约'][2]; //读取:昌平 echo $area['china']['北京']['cp']; //修改cp下标的值改为:西城区 $area['china']['北京']['cp'] = '西城区'; //输出看看原来昌平的值是否发生了变化 echo $area['china']['北京']['cp']; ?>通过上面我们发现数组学习起来不难。学习多维数组的难点:注意格式,将每个维度的换行、缩进弄整齐。就不容易出错了。【切记】数组元素间的分割符为逗号,在数组中插入数组的时候,不要在结尾处写成了分号(;)下图是错误的载图展示:
2019年08月25日
3,851 阅读
0 评论
0 点赞
2019-08-20
ThinkPHP6.0极速入门视频教程
ThinkPHP6.0主要新特性采用PHP7强类型(严格模式)支持更多的PSR规范原生多应用支持更强大和易用的查询全新的事件系统模型事件和数据库事件统一纳入事件系统模板引擎分离出核心内部功能中间件化SESSION机制改进对Swoole以及协程支持改进对IDE更加友好统一和精简大量用法ThinkPHP6.0在5.1的基础上对底层架构做了进一步的精简和统一,引入了一些新特性,并提升版本要求。ThinkPHP6.0运行环境要求PHP7.1+,不支持5.1的无缝升级
2019年08月20日
13,691 阅读
0 评论
40 点赞
1
...
24
25
26
...
37