Swoft

Laravel6实现第三方 微信登录

帅比萌擦擦* 提交于 2020-03-25 12:10:57
3 月,跳不动了?>>> 目前很多的网站中都会存在很多的交互功能,从而降低用户的操作难度,特此带来微信的第三方登录的项目实战功能开发。对于本实例中的开发内容,就不在使用原生的内容,而是直接使用别人写好的封装的类库。 1. 安装 laravel/socialite composer require laravel/socialite 2). 在你的 config/app.php 文件中添加以下配置信息 'providers' => [ Laravel\Socialite\SocialiteServiceProvider::class, ], 'aliases' => [ 'Socialite' => Laravel\Socialite\Facades\Socialite::class, ], 2. 安装 socialiteProviders/weixin 1). 直接运行以下命令安装扩展包 composer require socialiteproviders/weixin 2). 在你的 config/app.php 文件中添加以下配置信息 'providers' => [ \SocialiteProviders\Manager\ServiceProvider::class, ], 3). 在你的 app/Providers/EventServiceProvider.php

linux下查看php-fpm是否开启?如何开启?

吃可爱长大的小学妹 提交于 2020-03-24 14:26:21
3 月,跳不动了?>>> 1、查看php-fpm是否开启 命令:ps -ef|grep php 结果如下: 这是没有开启。 2、查看php-fpm的位置 命令:whereis php-fpm 3、开启php-fpm 命令:/usr/local/bin/php-fpm 4、再次输入命令ps -ef|grep php,查看是否已经开启 这是已经开启了。 以上内容希望帮助到大家, 很多PHPer在进阶的时候总会遇到一些问题和瓶颈,业务代码写多了没有方向感,不知道该从那里入手去提升,对此我整理了一些资料,包括但不限于:分布式架构、高可扩展、高性能、高并发、服务器性能调优、TP6,laravel,YII2,Redis,Swoole、Swoft、Kafka、Mysql优化、shell脚本、Docker、微服务、Nginx等多个知识点高级进阶干货需要的可以免费分享给大家 , 需要请戳这里 来源: oschina 链接: https://my.oschina.net/u/4234147/blog/3210135

TCP与UDP的区别究竟在哪

梦想与她 提交于 2020-03-23 16:16:16
3 月,跳不动了?>>> TCP的优点 : 可靠,稳定 TCP的可靠体现在TCP在传递数据之前,会有三次握手来建立连接,而且在数据传递时,有确认、窗口、重传、拥塞控制机制,在数据传完后,还会断开连接用来节约系统资源。 TCP的缺点 : 慢,效率低,占用系统资源高,易被攻击 TCP在传递数据之前,要先建连接,这会消耗时间,而且在数据传递时,确认机制、重传机制、拥塞控制机制等都会消耗大量的时间,而且要在每台设备上维护所有的传输连接,事实上,每个连接都会占用系统的CPU、内存等硬件资源。 而且,因为TCP有确认机制、三次握手机制,这些也导致TCP容易被人利用,实现DOS、DDOS、CC等攻击。 UDP的优点 : 快,比TCP稍安全 UDP没有TCP的握手、确认、窗口、重传、拥塞控制等机制,UDP是一个无状态的传输协议,所以它在传递数据时非常快。没有TCP的这些机制,UDP较TCP被攻击者利用的漏洞就要少一些。但UDP也是无法避免攻击的,比如:UDP Flood攻击…… UDP的缺点 : 不可靠,不稳定 因为UDP没有TCP那些可靠的机制,在数据传递时,如果网络质量不好,就会很容易丢包。 基于上面的优缺点,那么: 什么时候应该使用TCP: 当对网络通讯质量有要求的时候,比如:整个数据要准确无误的传递给对方,这往往用于一些要求可靠的应用。 比如HTTP、HTTPS、FTP等传输文件的协议

php使用redis的有序集合zset实现延迟队列

梦想与她 提交于 2020-03-21 16:34:34
3 月,跳不动了?>>> 延迟队列就是个带延迟功能的消息队列,相对于普通队列,它可以在指定时间消费掉消息。 延迟队列的应用场景: 1、新用户注册,10分钟后发送邮件或站内信。 2、用户下单后,30分钟未支付,订单自动作废。 我们通过redis的有序集合zset来实现简单的延迟队列,将消息数据序列化,作为zset的value,把消息处理时间作为score,每次通过zRangeByScore获取一条消息进行处理。 <?php class DelayQueue { protected $prefix = 'delay_queue:' ; protected $redis = null ; protected $key = '' ; public function __construct ( $queue , $config = []) { $this -> key = $this -> prefix . $queue ; $this -> redis = new Redis (); $this -> redis -> connect ( $config [ 'host' ], $config [ 'port' ], $config [ 'timeout' ]); $this -> redis -> auth ( $config [ 'auth' ]); } public function

套接字Socket的常见面试题及答案

笑着哭i 提交于 2020-03-18 17:05:33
某厂面试归来,发现自己落伍了!>>> 1. 对套接字编程的理解,它的协议是如何的? socket通常称为“套接字”,用于描述IP地址和端口,是一个通信链的句柄。应用程序通过套接字向网络发出请求或应答网络请求。 服务器和客户端通过socket进行交互。服务器需要绑定在本机的某个端口号上,客户端需要声明自己连接哪个地址的哪个端口,这样服务器和客户端就能连接了。 根据连接启动的方式以及本地套接字要连接的目标,套接字之间的连接过程可以分为三个步骤:服务器监听,客户端请求,连接确认。 (1)服务器监听:是服务器端套接字并不定位具体的客户端套接字,而是处于等待连接的状态,实时监控网络状态。 (2)客户端请求:是指由客户端的套接字提出连接请求,要连接的目标是服务器端的套接字。为此,客户端的套接字必须首先描述它要连接的服务器的套接字,指出服务器端套接字的地址和端口号,然后就向服务器端套接字提出连接请求。 (3)连接确认:是指当服务器端套接字监听到或者说接收到客户端套接字的连接请求,它就响应客户端套接字的请求,建立一个新的线程,把服务器端套接字的描述发给客户端,一旦客户端确认了此描述,连接就建立好了。而服务器端套接字继续处于监听状态,继续接收其他客户端套接字的连接请求。 socket是对TCP/IP协议的封装和应用。在TCP/IP协议中,TCP协议通过三次握手建立一个可靠的连接。 第一次握手

PHP5和PHP7取数组元素作动态函数名的差异

夙愿已清 提交于 2020-03-18 15:49:08
某厂面试归来,发现自己落伍了!>>> 在 PHP5 和 PHP7 中通过变量获取函数/方法名执行函数/方法时,可能会由于版本之间不通的解释策略导致相同的代码无法运行。 示例 $a = ['add', 'sub']; class Test {   public function add()   {     echo 1 + 2;   } } $t = new Test(); $t->$a[0](); 上例在 PHP5.6 下可以正常运行,但在 PHP7 下会抛出 Fatal error: Function name must be a string。这是因为 PHP5 下执行$t->$a<a href="">0</a>时,会先执行$a[0],获取元素值,然后执行对象的具体方法。 在 PHP7 下,则会先执行$t->$a,导致抛出错误,中断执行。如需要在 PHP7 下正常执行,需要修改为$t->{$a[0]}()。 具体差异可参考: 以上内容希望帮助到大家, 很多PHPer在进阶的时候总会遇到一些问题和瓶颈,业务代码写多了没有方向感,不知道该从那里入手去提升,对此我整理了一些资料,包括但不限于:分布式架构、高可扩展、高性能、高并发、服务器性能调优、TP6,laravel,YII2,Redis,Swoole、Swoft、Kafka、Mysql优化、shell脚本、Docker、微服务

PHP实现RabbitMQ消息队列

◇◆丶佛笑我妖孽 提交于 2020-03-17 14:40:35
某厂面试归来,发现自己落伍了!>>> 先安装PHP对应的RabbitMQ,这里用的是 php_amqp 不同的扩展实现方式会有细微的差异. php扩展地址: http:// pecl.php.net/package/am qp 具体以官网为准 http://www. rabbitmq.com/getstarted .html 介绍 config.php 配置信息 BaseMQ.php MQ基类 ProductMQ.php 生产者类 ConsumerMQ.php 消费者类 Consumer2MQ.php 消费者2(可有多个) config.php <?php return [ //配置 'host' => [ 'host' => '127.0.0.1', 'port' => '5672', 'login' => 'guest', 'password' => 'guest', 'vhost'=>'/', ], //交换机 'exchange'=>'word', //路由 'routes' => [], ];  BaseMQ.php <?php /** * Created by PhpStorm. * User: pc * Date: 2018/12/13 * Time: 14:11 */ namespace MyObjSummary\rabbitMQ; /** Member *

shell脚本---find详解

青春壹個敷衍的年華 提交于 2020-03-17 10:01:57
某厂面试归来,发现自己落伍了!>>> 作用:   Linux下find命令在目录结构中搜索文件,并执行指定的操作。Linux下find命令提供了相当多的查找条件,功能很强大 find常见命令参数: <strong>命令选项:</strong> -name 按照文件名查找文件。 -perm 按照文件权限来查找文件。 -user 按照文件属主来查找文件。 -group 按照文件所属的组来查找文件。 -mtime -n +n 按照文件的更改时间来查找文件 【-7 7天之内 +7 7天前】 -nogroup 查找无效属组的文件,即该文件所属的组在/etc/groups中不存在。 -nouser 查找无效属主的文件,即该文件的属主在/etc/passwd中不存在。 -newer file1 ! file2 查找更改时间比文件file1新但比文件file2旧的文件。 -type 查找某一类型的文件,诸如: b - 块设备文件。 d - 目录。 c - 字符设备文件。 p - 管道文件。 l - 符号链接文件。 f - 普通文件。 -size n:[c] 查找文件长度为n块的文件,带有c表示文件长度以字节计。 -depth:在查找文件时,首先查找当前目录中的文件,然后再在其子目录中查找。 -follow:如果find命令遇到符号链接文件,就跟踪至链接所指向的文件。 另外,下面三个的区别:

Yii2中自带分页类实现分页

不想你离开。 提交于 2020-03-13 11:00:07
1.首先写控制器层 先引用pagination类 use yii\data\Pagination; 写自己的方法: function actionFenye(){ $data = Field::find(); //Field为model层,在控制器刚开始use了field这个model,这儿可以直接写Field,开头大小写都可以,为了规范,我写的是大写 $pages = new Pagination(['totalCount' =>$data->count(), 'pageSize' => '2']); //实例化分页类,带上参数(总条数,每页显示条数) $model = $data->offset($pages->offset)->limit($pages->limit)->all(); return $this->renderPartial('fenye',[ 'model' => $model, 'pages' => $pages, ]); } 2. model层就是直接用../yii/frontend/web/index.php?r=gii 生成的model 3.最后是显示页面 <?php use yii\widgets\LinkPager; ?> <?php foreach($model as $key=>$val){ ?> <?= $val->Id; ?> //相当于

保存数组配置到PHP文件,一行代码搞定

我只是一个虾纸丫 提交于 2020-03-06 16:04:29
在PHP中,可以直接通过include '文件名.php';的方式获取到文件的返回值。 例如有一个db.php文件,内容为: <?php return array ( 'DB_HOST' => 'localhost' , 'DB_NAME' => 'mydb' , 'DB_USER' => 'root' , 'DB_PWD' => '123456' , ); 通过下面语句: $dbConfig = include 'db.php'; 就能把db.php中定义的数组赋值给$dbConfig变量,在加载配置文件中我们经常这样用。 那么,能否如何更改db.php内容呢? 就是把dbConfig变量(数组或者字符串都可以)写入db.php文件,并且下次还能用include来获取呢? 一种方式是直接修改源码。 另外一种是,通过程序来修改,比如后台。 实现的方式如下: /** * 保存配置到php文件中 * @param string $filename 文件路径 * @param mixed $content 保存的内容 */ function saveConfig($filename, $content) { file_put_contents($filename, " <?php \n\nreturn " . var_export( $content , true) . ';'); }