php
huizhang.
EasySwoole开发组成员
展开
-
PHP大厂面经!!!
面经百度、腾讯PHP大厂面试经验分享,拿到了百度offer操作系统/计算机网络【并发】IO多路复用select/poll/epoll介绍Linux 系统目录结构find 查找文件的命令Linux 如何查看系统负载linux C嵌入式面试宝典——用户态和内核态Linux信号机制TCP对决UDPTCP 是如何工作的?三次握手和四次挥手是什么?tcp建立连接为什么需要三次握手tcp挥手时的time-wait状态为什么需要持续2MSL什么是TCP粘包?怎么解决这个问题建立socket需原创 2021-04-05 22:16:42 · 386 阅读 · 0 评论 -
EasySwoole命令管理思维导图
原创 2021-03-28 22:57:55 · 168 阅读 · 0 评论 -
PHP内核剖析
php 内核探秘之 PHP_FUNCTION 宏原创 2021-03-14 01:02:07 · 258 阅读 · 0 评论 -
PHP利用反射给对象的私有属性赋值、调用对象私有方法
话不多说,直接上代码<?phpclass User{ private $name; private function getName() { return $this->name; }}// 反射拿到类$class = new ReflectionClass('User');// 获取对象实例$obj = $class->newInstance();// 获取方法对象$method = $class-&g.原创 2021-03-05 19:29:53 · 819 阅读 · 0 评论 -
基于文本协议实现memcache协程客户端(swoole)
简介在开发easyswoole组件时发现,MemcacheQ(微博自研消息队列)与memcache二进制协议不完全兼容,所以只能使用文本协议重新开发一个memcache协程客户端组件安装composer require huizhang/memcache使用方式<?phpinclude './vendor/autoload.php';use Huizhang\Memcache\Memcache;use Huizhang\Memcache\Config;go(functio原创 2021-02-21 23:13:51 · 221 阅读 · 0 评论 -
Grafana自定义alert的实现过程
前言grafana自带的alert功能是有限的,比如只能对某个query 配置alert,而不能对具体分类,当然我们可以通过代码来实现定制化的alert需求, 因为要用到定时监控grafana的数据变化情况,所以使用easyswoole的定时器功能来做讲解。生成keykey为调用grafana http api 所需的验证信息分析要请求的api和传递的参数当然你可以去grafana官方文档去翻一番http api 章节Install easyswoole的http-clie原创 2021-02-07 01:43:57 · 2513 阅读 · 2 评论 -
基于 EasySwoole 实现通用队列
EasySwoole 通用队列组件支持消费数据先落盘防止异常丢失数据支持队列数据消费日志保留支持基于Redis延迟队列支持基于Redis的队列支持MemcacheQ后续会支持更多消息中间件的消费驱动安装composer require huizhang/universal-queue定义消费者<?phpnamespace App\DelayQueue;use Huizhang\UniversalQueue\Core\ConsumerAbstract;class原创 2021-01-24 22:32:47 · 1280 阅读 · 0 评论 -
session_start():Session data file is not created by your uid
问题概要 前几天公司给配置了电脑,为MAC系统,刚刚配置了apache、ngnix、php5.6和php7.0。所以把以前笔记本电脑中的项目拷贝到公司电脑。就出现了如下图错误。问题分析 通过tp5.0框架给的提示,可以很明显看出来,session文件不是由自身的uid所创建的。当时因为本人怀疑自身的英语水平所以百度翻译了一下(如下图)。并且我用tp3.2和5.0裸框架...原创 2017-04-11 16:23:54 · 5908 阅读 · 0 评论 -
PhpExcel 的导入导出
成功后的代码 //导入卡券 public function import_excel(){ if(Request::instance()->isPost()){ $activity = request() -> post(); $file = Request()->file('file');//获取表单提交过来的文件原创 2017-06-10 14:18:50 · 348 阅读 · 0 评论 -
Tp5关于include模版标签的使用和模版缓存问题
如何使用include和遇到的问题请参考链接:http://www.thinkphp.cn/document/164.html如何清理runtime下temp模版缓存问题//可以写在退出登陆方法中array_map('unlink', glob(TEMP_PATH . '/*.php'));rmdir(TEMP_PATH);拓展知识清除runtime下cache方法Cache::clear();原创 2017-08-09 11:04:42 · 4013 阅读 · 0 评论 -
小程序+TP5使用JWT做登陆验证
常用的几种认证机制HTTP Basic Auth HTTP Basic Auth简单点说明就是每次请求API时都提供用户的username和password,简言之,Basic Auth是配合RESTful API使用的最简单的认证方式,只需提供用户名密码即可,但由于有把用户名密码暴露给第三方客户端的风险,在生产环境下被使用的越来越少。因此,在开发对外开放的RESTful API时,尽量避免采用原创 2017-08-18 18:11:34 · 5426 阅读 · 0 评论 -
tp5+mysql实现消息队列,并在mac系统下定时执行
Demo简介 订单系统和配货系统之间的信息传递,当订单系统压力比较大时或者出现故障时不影响到配货系统,所以就用了消息队列和定时系统。Demo准备1.创建一张数据表重点内容 status:0未处理,1已完成,2.处理中 2.下载tp5 3.mac系统 4.php7.0(我的是php7.0)Demo流程1.客户下单(如果是在高并发的情况下,订单系统压力会很...原创 2017-08-13 18:30:52 · 4467 阅读 · 1 评论 -
TP5验证码点击刷新与验证
前台后台验证public function check($code=''){ $captcha = new \think\captcha\Captcha(); if (!$captcha->check($code)) { $this->error('验证码错误'); } return;}原创 2017-08-24 17:20:46 · 5231 阅读 · 0 评论 -
在Tp5中使用SPL数据结构SplDoublyLinkedList(双向链表)
在tp5中引入SplDoublyLinkedListnamespace app\index\controller;use SplDoublyLinkedList;//引入双向链表class Index{ public function index() { $obj = new SplDoublyLinkedList();//实例化双向链表 } }原创 2017-08-25 12:06:18 · 684 阅读 · 0 评论 -
PBAC基于策略的权限控制
PBAC思想要解决的问题?在pb实现一般管理系统的时候,我们会遇到这样一种情况,作为一个系统,可以分为若干个子系统,有多个操作员对它进行操作,每个操作员对各个子系统的权限不同,甚至在同一子系统中,操作员对各个菜单项的操作权限也不一样,更细一点,不同的操作员对于同一窗口中某一按钮的操作权限也是不一样的,那么,怎样较好地实现对不同用户细化到某个按钮的权限控制呢?思路1.举例...转载 2017-08-22 16:32:23 · 10558 阅读 · 0 评论 -
TP5+SPl(堆栈)继承自SplDoublyLinkedList类的SplStack类
代码实例<?phpnamespace app\index\controller;use SplStack;//引入双向链表class Index{ public function index() { $stack = new SplStack; $stack -> push('a');//push操作向堆栈里面放入一个节点到top位置原创 2017-08-25 14:39:53 · 301 阅读 · 0 评论 -
TP5+SPL SplQueue(队列)
简介 队列和堆栈刚好相反,最先进入队列的元素会最先走出队列。 继承自SplDoublyLinkedList类的SplQueue类操作enqueue:进入队列 dequeue:退出队列代码实例<?phpnamespace app\index\controller;use SplQueue;//引入队列类class Index{ public function index()原创 2017-08-25 15:05:04 · 1696 阅读 · 0 评论 -
ArrayIterator迭代器遍历数组
代码<?phpnamespace app\index\controller;use ArrayObject;//引入迭代器class Index{ public function index() { $fruits = array( "apple" => 'apple value',//position =0 "原创 2017-08-25 15:41:50 · 5340 阅读 · 0 评论 -
Spl迭代器--AppendIterator
简介 AppendIterator能陆续遍历几个迭代器,按舒徐迭代访问几个不同的迭代器,例如,希望在以此循环中迭代访问两个或者更多的组合代码<?phpnamespace app\index\controller;use AppendIterator;//引入迭代器use ArrayIterator;class Index{ public function index()原创 2017-08-25 15:54:30 · 388 阅读 · 0 评论 -
TP5+SPL迭代器--MultipleIterator
简介 MultipleIterator用于把多个Iterator里面的数据组合称为一个整体来访问代码<?phpnamespace app\index\controller;use MultipleIterator;//引入迭代器use ArrayIterator;class Index{ public function index() { $array原创 2017-08-25 16:05:47 · 604 阅读 · 0 评论 -
PHP函数可变函数列表
代码实例<?phpnamespace app\index\controller;class Index{ public function index(){ $res = $this -> test(1,2,3,4); echo $res; } //函数可变元素列表 public function test(){ $原创 2017-08-25 17:09:34 · 334 阅读 · 0 评论 -
PHP函数 引用传递
代码实例<?phpnamespace app\index\controller;class Index{ public function index(){ $a = 2; $b = 3; $res = $this -> test($a,$b); echo 'a='.$a.'----------------';原创 2017-08-25 17:19:13 · 329 阅读 · 0 评论 -
匿名函数(闭包)
定义 匿名函数,也叫闭包函数,允许临时创建一个没有制定名称的函数。最经常用作回调函数(callback)参数的值使用 闭包函数可以作为遍历的值来使用代码实例1.public function index(){ $message = 'guoyuzhao'; $example = function () use (&$message){//如果使用外部变量用原创 2017-08-25 18:09:41 · 300 阅读 · 0 评论 -
PHP通过{}对字符串进行操作
获取字符串中的字符代码实例$str = 'abcdefg';echo $str{2};运行结果c修改字符串中的字符代码实例$str = 'abcdefg';$str{1} ='8';echo $str; 运行结果a8cdefg原创 2017-08-26 11:23:08 · 341 阅读 · 0 评论 -
PHP+Tp5中heredoc和nowdoc解析
普通转换模式代码实例<?phpnamespace app\index\controller;class Index{ public function index(){ header('content-type:text/html;charset=utf-8'); $table= "<table border='1' width=\"80%\">//注意这里原创 2017-08-26 11:42:42 · 336 阅读 · 0 评论 -
Mac 配置 php-fpm 时出现'/private/etc/php-fpm.conf': No such file or directory (2)
Mac 自带 php-fpm,在终端执行 php-fpm,会报如下错误:ERROR: failed to open configuration file '/private/etc/php-fpm.conf': No such file or directory (2)ERROR: failed to load configuration file '/private/etc/php-f...转载 2017-09-08 22:15:28 · 8264 阅读 · 0 评论 -
SPL---spl_autoload_register
简介 将函数注册到SPL __autoload函数队列中。如果该队列中的函数尚未激活,则激活它们。 如果在你的程序中已经实现了__autoload()函数,它必须显式注册到__autoload()队列中。因为 spl_autoload_register()函数会将Zend Engine中的__autoload()函数取代为spl_autoload()或spl_autoloa原创 2017-09-26 23:57:08 · 291 阅读 · 0 评论 -
php通过header发送自定义数据
介绍 本文将介绍如何通过header发送自定义数据。发送请求时,除了可以使用GET/_GET/_POST发送数据,也可以把数据放在header中传输过去。发送header: 我们定义了三个参数,token、language、region,放入header发送过去<?php$url = 'http://www.example.com';$header = array('token:Jx转载 2017-10-18 22:38:49 · 742 阅读 · 0 评论 -
jQuery 实现图片下载代码
jQuery 实现图片下载代码function downloadImage(src) { var $a = $("<a></a>").attr("href", src).attr("download", "meitu.png"); $a[0].click();}完整 js 代码$(function () { $.extend($.fn.bootstrapTable.defa转载 2017-10-31 18:22:27 · 681 阅读 · 0 评论 -
Tp5使用date函数突然报错
错误信息 Fatal error: Uncaught exception ‘think\exception\ErrorException’ with message ‘date(): It is not safe to rely on the system’s timezone settings. You are required to use the date.timezone s原创 2017-10-15 16:54:45 · 2412 阅读 · 0 评论 -
tp5隐藏入口文件index.php
为什么要隐藏入口文件 使页面url美观,方便搜索引擎收录具体实现在index.php同级目录下新建.htaccess(默认自带)添加如下内容<IfModule mod_rewrite.c> Options +FollowSymlinks -Multiviews RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-d Rewrite原创 2017-11-12 10:29:59 · 4694 阅读 · 0 评论 -
mac下配置apache虚拟主机
为什么要配置虚拟主机 访问web服务,本质上看(从协议上)是访问某个IP的主机上的某个端口(默认是80) 通常需要通过访问不同的域名或者端口实现对不同网站的访问(具体到服务器里就是不同目录),这个时候就需要设置虚拟主机(VirtualHost).通常分为这样3种: 基于域名,基于端口,基于IP,以及它们的混合详细步骤对apache的httpd.conf进行修改 我是自己安装的a原创 2017-11-12 11:03:07 · 734 阅读 · 0 评论 -
tp5闭包子查询
大哥写的三层闭包嵌套,保存一下。原创 2017-11-12 14:23:54 · 3964 阅读 · 0 评论 -
删除目录及目录下所有文件或删除指定文件
/** * 删除目录及目录下所有文件或删除指定文件 * @param str $path 待删除目录路径 * @param int $delDir 是否删除目录,1或true删除目录,0或false则只删除文件保留目录(包含子目录) * @return bool 返回删除状态 */function delDirAndFile($path, $delDir = FALSE) { ...原创 2017-11-12 14:43:02 · 496 阅读 · 0 评论 -
php实现兼容Unicode文字的字符串大小写转换strtolower()和strtoupper()
方法一简介 PHP的strtolower()和strtoupper()函数在安装非中文系统的服务器下可能会导致将汉字转换为乱码,请写两个替代的函数实现兼容Unicode文字的字符串大小写转换。 原因是:中文是由多字节组成的,而只有英文系统的单个英文字符只有一个字节,所以该系统把中文的每一个字节都做了strtolower()处理,改变后的中文字节拼接在一起就成了乱码(新生成的编码映射对应的字原创 2017-11-13 23:15:09 · 916 阅读 · 0 评论 -
php合并数组的几种方式
+号方式介绍规则:当两个数组的键名是数字键名或者字符串键名可以直接 +,$c = $a + $b,在$a后追加($b在$a中不存在的键名)键名和值。注意:不覆盖,只是追加不存在的键名和对应的值。键名不重新索引。无论是全部数字键名还是混合,都只是追加键名和值,如果键名相同则不进行追加,即把最先出现的值作为最终结果返回。代码array_merge说明规则:array_merge() 将一个或多个数原创 2017-11-13 23:50:13 · 14316 阅读 · 0 评论 -
输入文本框内容a标签中的链接自动改变
代码<!DOCTYPE html><html><head> <title></title> <link href="__STATIC__/layui/css/layui.css" rel="stylesheet" media="all"/> <link href="__STATIC__/base/css/myself.css" rel="stylesheet"/></h原创 2017-11-28 16:52:15 · 1765 阅读 · 0 评论 -
php Curl json
代码//post json 请求function http_post_json($url, $jsonStr){ $ch = curl_init(); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonS原创 2017-11-28 16:55:40 · 554 阅读 · 0 评论 -
用easywechat获取open_id(thinkphp5.0)
<?phpnamespace app\phone\controller;use think\Controller;use think\Session;use EasyWeChat\Foundation\Application;class VipController extends Controller{ //验证缓存openid private function hasOpe原创 2017-11-28 17:00:03 · 8052 阅读 · 0 评论 -
Artisan 命令
查看所有命令 Artisan 是 laravel 自带的命令行工具接口的名称。它为应用的开发提供了多种有用的命令工具。Artisan 的底层驱动是强大的 Symfony 控制台组件。你可以使用 list 命令来查看可用的 Artisan 命令(要在自己项目下使用):php artisan list查看单个命令php artisan help migrate请参考http://www.jians原创 2017-12-02 16:24:54 · 312 阅读 · 0 评论