随笔分类 - PHP
摘要:为什么使用断点调试 大家可能会觉得使用var_dump和echo也能调试啊,为什么还要安装Xdebug断点调试呢? 确实是这样。但是var_dump和echo写的代码后面还要删除,而且明确是知道在哪打的,如果发现没有运行到打点的地方,还要修改代码再运行一次。而断点调试,可以在调试过程中动态打断点,逐
阅读全文
摘要:普通请求 curl_normal.php use time:0.830 s curl_multi并发 curl_multi.php use time:0.259 s curl_multi并发优化:curl_multi_select 在上个示例里当 时,执行 而整个批处理句柄没有全部执行完毕时,系统会
阅读全文
摘要:swoole提供了 函数,可以实现异步。此函数可以用在Server或Client模式下。 swoole_event_add属于AsyncIO,必须运行在CLI 模式。 异步tcp客户端 stream_socket_client实现tcp同步客户端 示例: php $sock swoole_proce
阅读全文
摘要:简介 swoole_process 是swoole提供的进程管理模块,用来替代PHP的pcntl扩展。 首先,确保安装的swoole版本大于1.7.2: 注意:swoole_process在最新的1.8.0版本已经禁止在Web环境中使用了,所以也只能支持命令行。这时候如果要做并发,multi cur
阅读全文
摘要:本文以YII 2.0.7为例。 概述 首先看看多应用和多模块的特点: 多应用的特点: 独立配置文件 独立域名 多模块的特点: 统一配置文件 统一域名 那么,实际该怎么决定使用多应用还是多模块呢? 对于前后台分离,例如后台需要单独的域名进行管理这个应该用多应用 多应用的配置完全不一样,用多应用比较方便
阅读全文
摘要:配置说明 daemonize 设置是否后台运行。默认是false。设置 时,程序将转入后台作为守护进程运行。长时间运行的服务器端程序必须启用此项。 如果不启用守护进程,当ssh终端退出后,程序将被终止运行。 注意: 启用守护进程后,标准输入和输出会被重定向到 log_file。 如果未设置log_f
阅读全文
摘要:Process "Process" 是swoole内置的进程管理模块,用来替代PHP的pcntl扩展。 swoole_process支持重定向标准输入和输出,在子进程内echo不会打印屏幕,而是写入管道,读键盘输入可以重定向为管道读取数据。 配合swoole_event模块,创建的PHP子进程可以异
阅读全文
摘要:需要具备的知识点 闭包 闭包和匿名函数在PHP5.3.0中引入的。 闭包是指:创建时封装周围状态的函数。即使闭包所处的环境不存在了,闭包中封装的状态依然存在。 理论上,闭包和匿名函数是不同的概念。但是PHP将其视作相同概念。 实际上,闭包和匿名函数是伪装成函数的对象。他们是Closure类的实例。
阅读全文
摘要:示例代码详见 "https://github.com/52fhy/design_patterns" 观察者模式 观察者模式(Observer)是对象的行为模式,又叫发布 订阅(Publish/Subscribe)模式、模型 视图(Model/View)模式、源 监听器(Source/Listener
阅读全文
摘要:示例代码详见 "https://github.com/52fhy/design_patterns" 抽象工厂 抽象工厂(Abstract Factory)是应对产品族概念的。比如说,每个汽车公司可能要同时生产轿车、跑车、货车、客车,那么每一个工厂都要有创建轿车,货车和客车的方法。 在学习抽象工厂具体
阅读全文
摘要:示例代码详见 "https://github.com/52fhy/design_patterns" 工厂方法 工厂方法是针对每一种产品提供一个工厂类。通过不同的工厂实例来创建不同的产品实例。 相比简单工厂,创建对象这件事不再交由一个类来创建:把简单工厂拆分,每个产品由专门的一个简单工厂来实现,每个简
阅读全文
摘要:示例代码详见 "https://github.com/52fhy/design_patterns" 简单工厂 简单工厂模式的工厂类一般是使用静态方法,通过接收的参数的不同来返回不同的对象实例。 也就是使用的时候通过传参来确定生成不同的对象。 简单工厂UML图: 简单工厂需要有3个角色: Produc
阅读全文
摘要:WebSocket 使用Swoole可以很简单的搭建异步非阻塞多进程的WebSocket服务器。 WebSocket服务器 shell里直接运行 启动即可。如果设置了后台运行,可以使用下列命令强杀进程: 或者重新启动worker进程: 输出: 注意: onMessage回调函数为必选,当服务器收到来
阅读全文
摘要:本文示例代码详见:https://github.com/52fhy/swoole_demo。 重新打开日志 在1.8.11及之后版本支持重新打开日志:向Server主进程发送SIGRTMIN信号。假设主进程id是3427,那么我们可以: 注:SIGRTMIN信号的id是 。通过 查看。 那么如何利用
阅读全文
摘要:本文示例代码详见:https://github.com/52fhy/swoole_demo。 简介 Swoole是一个PHP扩展,提供了PHP语言的异步多线程服务器,异步TCP/UDP网络客户端,异步MySQL,异步Redis,数据库连接池,AsyncTask,消息队列,毫秒定时器,异步文件读写,异
阅读全文
摘要:本文示例代码详见:https://github.com/52fhy/crypt demo DES DES全称为Data Encryption Standard,即数据加密标准,是一种使用密钥加密的块算法,1977年被美国联邦政府的国家标准局确定为联邦资料处理标准(FIPS),并授权在非密级政府通信中
阅读全文
摘要:本文示例代码详见:https://github.com/52fhy/crypt demo 编码方式 BASE64 BASE64不属于加密算法,而是编码方式。Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一。Base64编码可用于在HTTP环境下传递较长的标识信息。 BASE64由编
阅读全文
摘要:本文示例代码详见:https://github.com/52fhy/crypt demo 摘要算法 摘要算法又称哈希/散列算法。它通过一个函数,把任意长度的数据转换为一个长度固定的数据串(通常用16进制的字符串表示)。算法不可逆。 散列/哈希算法有: MD5 MD5(Message Digest A
阅读全文
摘要:主要实现了在后台查看日志列表及打包下载功能。 由于用到了PHP压缩功能,特此记录下。 压缩下载类: Hzip.php 逻辑部分无非就是打开某个目录,然后列出来: 前端把 展示出来就行啦: 参考: 1、php如何读取文件夹目录里的文件并按照日期,大小,名称排序 fzxu_05的个人页面 https:/
阅读全文
摘要:php执行一段程序,有可能几毫秒就执行完毕,也有可能耗时较长。例如,用户下单这个事件,如果调用了些第三方服务进行发邮件、短信、推送等通知,可能导致前端一直在等待。而有的时候,我们并不关心这些耗时脚本的返回结果,只要执行就行了。这时候就需要采用异步的方式执行。 众所周知,PHP没有直接支持多线程这种东
阅读全文