
PHP
文章平均质量分 72
@日月空@
这个作者很懒,什么都没留下…
展开
-
TP6使用 think-queue 来实现普通队列和延迟队列
###TP6 队列TP6 中使用 think-queue 可以实现普通队列和延迟队列。think-queue 是thinkphp 官方提供的一个消息队列服务,它支持消息队列的一些基本特性:消息的发布,获取,执行,删除,重发,失败处理,延迟执行,超时控制等队列的多队列, 内存限制 ,启动,停止,守护等消息队列可降级为同步执行消息队列实现过程1、通过生产者推送消息到消息队列服务中2、消息队列服务将收到的消息存入redis队列中(zset)3、消费者进行监听队列,当监听到队列有新的消息时,获原创 2021-10-26 18:23:28 · 4694 阅读 · 0 评论 -
php-fpm 运行模式
fpm的实现就是创建一个master进程,在master进程中创建并监听socket,然后fork出多个子进程,这些子进程各自accept请求,子进程的处理非常简单,它在启动后阻塞在accept上,有请求到达后开始读取请求数据,读取完成后开始处理然后再返回,在这期间是不会接收其它请求的,也就是说fpm的子进程同时只能响应一个请求,只有把这个请求处理完成后才会accept下一个请求,这一点与nginx的事件驱动有很大的区别,nginx的子进程通过epoll管理套接字,如果一个请求数据还未发送完成则会处理下一个转载 2021-09-18 22:02:02 · 607 阅读 · 0 评论 -
一次php请求过程图解
一个php页面的请求过程说明(1) 在本机浏览器中输入网址:my.test.com,请求被发送到hosts文件指定的192.168.100.142:80,即我本机虚拟机的80端口;(2) 监听192.168.100.142:80的nginx接收到此次请求,由于这是一次Http请求,所以nginx的核心模块会把它交给Http模块来选择合适的Handler模块。(3) 经过请求初始化与请求解析,确定请求/{rootPath}/yii/frontend/web/index.php页面的内容。由于这是一个p转载 2021-09-18 21:59:24 · 660 阅读 · 0 评论 -
使用企业微信群机器人实现生产告警
如何使用群机器人消息类型及数据格式文本类型markdown类型图片类型图文类型文件类型模版卡片类型文本通知模版卡片图文展示模版卡片消息发送频率限制文件上传接口如何使用群机器人在终端某个群组添加机器人之后,创建者可以在机器人详情页看的该机器人特有的webhookurl。开发者可以按以下说明a向这个地址发起HTTP POST 请求,即可实现给该群组发送消息。下面举个简单的例子.假设webhook是:https://qyapi.weixin.qq.com/cgi-bi.转载 2021-09-02 15:12:14 · 2447 阅读 · 2 评论 -
PHP运行模式
SAPI所谓 PHP 运行模式, 其实指的是 SAPI (Server Application Programming Interface,服务端应用编程端口 )。SAPI 为 PHP 提供了一个和外部通信的接口, PHP 就是通过这个接口来与其它的应用进行数据交互的。针对不同的应用场景, PHP 也提供了多种不同的 SAPI ,常见的有:apache、apache2filter、apache2handler、cli、cgi、embed 、fast-cgi、isapi 等等。[外链图片转存失败,源站可能转载 2021-08-20 15:48:46 · 226 阅读 · 0 评论 -
配置 Homestead 遇到 PHP 版本问题
Homestead PHP 版本问题打开网页的时候显示Fatal error: Composer detected issues in your platform: Your Composer dependencies require a PHP version “>= 7.2.5”. You are running 7.1.33-18+ubuntu20.04.1+deb.sury.org+1. in /home/vagrant/Code/Laravel/vendor/composer/plat原创 2020-11-28 17:25:51 · 1020 阅读 · 0 评论 -
调用第三方接口成功后,如果自己本身接口报错,如何实现事务回滚?
解决思路如下:1.创建事务2.先更新本地订单状态(失败则回滚)3.再调用第三方接口4.根据接口返回值决定事务提交还是回滚这样首先保证了本地数据能够更新,再根据接口返回值判断是否更新。这种方法只是针对单一操作,如果是大量的批量操作,建议使用队列进行异步处理。问题一:在事务中去请求第三方接口,容易导致事务时间过长,对方接口超时多久,你的db事务也卡多久问题二如果我们是接口提供方,就需要考虑程序异常,网络超时问题、服务器重启、并发等问题。为了保证提供方数据一致性,我们需要提供的特性有:回原创 2020-10-29 16:50:22 · 8639 阅读 · 2 评论 -
php读取word文件过程中乱码,怎么解决?
原文链接一、首先要确认php版本,最好是高于5.6二、启用PHP Com 扩展// 将以下两行代码放入php.ini中, 并且重启服务器// 开启扩展extension=php_com_dotnet.dll// COM扩展里自带的,只需将前面的;去掉就可以了com.allow_dcom = true三、代码如下: public function readWord($url) { $word = new COM("word.application") o转载 2020-10-16 14:13:43 · 763 阅读 · 0 评论 -
PHP中的魔术方法详解
原文地址PHP中有一类特别的系统方法,它们统一以__开头,使用语义清晰简单,这类形式特殊、作用特殊的方法被称为魔术方法。常见的魔术方法有:__construct()、__destruct()__call()、__callStatic()__get()、__set()__isset()、__unset()__sleep()、__wakeup()__toString()、__invoke()、__clone()、__set_state()、__debugInfo()这些魔术方法往往是成对出现转载 2020-09-27 16:00:09 · 651 阅读 · 0 评论 -
接口多次调用结果不一致?如何保证接口的幂等性
什么是幂等性?幂等性最早是数学里面的一个概念,后来被用于计算机领域。接口的幂等性实际上就是接口可重复调用,在调用方多次调用的情况下,接口最终得到的结果是一致的。什么情况下需要幂等性?在微服务架构下或者调用外部接口时,我们在完成一个订单流程时经常遇到下面的场景:一个订单创建接口,第一次调用超时了,然后调用方重试了一次在订单创建时,我们需要去扣减库存,这时接口发生了超时,调用方重试了一次当这笔订单开始支付,在支付请求发出之后,在服务端发生了扣钱操作,接口响应超时了,调用方重试了一次一个订单状转载 2020-09-25 15:08:19 · 2995 阅读 · 0 评论 -
PHP 的 ::class 用法
自 PHP 5.5 起,关键词 class 也可用于类名的解析。使用 ClassName::class 可以获取一个字符串,包含了类 ClassName 的完全限定名称。这对使用了命名空间的类尤其有用。<?phpnamespace my\library\mvc;class Dispatcher {}print Dispatcher::class; // my\library\mvc\Dispatcher$disp = new Dispatcher;print disp::class原创 2020-09-04 14:07:03 · 863 阅读 · 0 评论 -
PHP SPL标准库(辅助数据结构)
一.什么是SPL?SPL是用于解决典型问题(standard problems)的一组接口与类的集合。SPL,PHP 标准库(Standard PHP Library) ,从 PHP 5.0 起内置的组件和接口,且从 PHP5.3 已逐渐的成熟。SPL 在所有的 PHP5 开发环境中被内置,同时无需任何设置。二.如何使用?SPL提供了一组标准数据结构:双向链表SplDoublyLinkedListSplStackSplQueue双链表是一种重要的线性存储结构,对于双链表中转载 2020-09-04 11:02:54 · 218 阅读 · 0 评论 -
PHP使用error_log记录日志的使用方法和配置
原文地址php error_log记录日志的使用方法和配置对于PHP开发者来 说,一旦某个项目投入使用,应该立即将 display_errors选项关闭,以免因为这些错误所透露的路径、数据库连接、数据表等信息而遭到黑客攻击。但是,任何一个产品在投入使用后,都难免会有错误出现,那么如何记录一些对开发者有用的错误报告呢?我们可以在单独的文本文件中将错误报告作为日志记录。错误日志的记录,可以帮助开发人员或者管理人员查看系统是否存在问题。如果需要将程序中的错误报告写入错误日志中,只要在PHP的配置文件中转载 2020-08-19 12:40:34 · 5795 阅读 · 0 评论 -
PHP反射机制详解
什么是反射反射机制就是不需要实例化对象,利用类名就可以获取关于这个类的一系列信息,具有对类、接口、函数、方法和扩展进行反向工程的能力。 直观理解就是根据结果找出原因。此外,反射 API 提供了方法来取出函数、类和方法中的文档注释。如何使用反射API以下面代码为例class HandsonBoy{ public $name = 'chenqionghe'; public $age = 18; public function __set($name,$value) {转载 2020-08-15 10:31:32 · 246 阅读 · 0 评论 -
一文打尽PHP代码加密方式
原文地址温馨提示:世界上没有破不了的密码,如果有那也只是时间问题。我们能做的只是增加破解时间。如果这个破解时间大于一个人的寿命,那么这个加密方式肯定是成功的。对于加密的程序,就像破解者需要了解、猜测编写者的思路一样,编写者也需要去了解破解者的方法、手段。这样才能写出破解难度更高的程序。壳”加密”这一类“加密”包括:无扩展加密:phpjiami、zhaoyuanma的免费版本等有扩展的加密:php-beast、php_screw、screw_plus、ZoeeyGuard、tonyenc等市面转载 2020-08-14 17:16:48 · 9288 阅读 · 1 评论 -
PHP操作文件及目录需要注意的点
fopen()函数的问题fopen — 打开文件或者 URLresource fopen( string filename, string mode[, bool use_include_path = false[, resource context]] )fopen() 将 filename 指定的名字资源绑定到一个流上。 <?php$handle = fopen("/home/rasmus/file.txt", "r");$handle = fopen("/home/rasmus/f原创 2020-07-16 15:50:33 · 213 阅读 · 0 评论 -
PHP怎么对URL编码和解码
为什么要对URL编码当我们使用GET方式传递参数时,参数内容就直接会在URL地址显示出来,安全系数较低。login.php?name=test&password=123456而且如果在参数中带有空格,则用 URL 传递参数时就会发生错误,而用 URL编码后,空格转换成%20等。这样错误就不会发生了。对中文进行编码也是同样的情况,因此,我们需要对 URL 传递的参数进行编码,把传递的参数内容隐藏起来。URL 编码是指针对网页url中的中文字符的一种编码转化方式,最常见的就是Baidu等搜原创 2020-07-15 10:49:26 · 3817 阅读 · 0 评论 -
PHP 异常处理
目录异常是什么为什么要使用异常异常的基本使用Try、throw 和 catch实例解释:创建一个自定义的 Exception 类实例解释:多个异常实例解释:重新抛出异常实例解释:设置顶层异常处理器异常的规则异常是什么异常处理用于在指定的错误(异常)情况发生时改变脚本的正常流程。这种情况称为异常。PHP 5 提供了一种新的面向对象的错误处理方法。当异常被触发时,通常会发生:当前代码状态被保存代码执行被切换到预定义(自定义)的异常处理器函数根据情况,处理器也许会从保存的代码状态重新开始执行代码,转载 2020-07-02 17:08:55 · 222 阅读 · 0 评论 -
PHP错误处理及设置默认错误处理程序
目录一、常见的错误类型二、错误级别三、自定义默认错误处理程序设置错误处理程序设置错误处理程序实例错误处理程序可接受的参数列表错误报告级别手动触发错误手动触发错误实例一、常见的错误类型在PHP中,错误用于指出语法、环境或编程问题。根据错误出现在编程过程中的不同环节,大致可以分为以下4类。语法错误:是指编写的代码不符合PHP的语法规范。特点:语法错误最常见,也最容易修复例如:遗漏了一个分号,就会显示错误信息。这类错误会阻止PHP脚本执行,通常发生在程序开发时,可以通过错误报告进行修复,再重新运行检原创 2020-07-02 16:41:23 · 748 阅读 · 0 评论 -
PHP操作Redis命令总结
<?php// 一、Redis连接与认证$redis = new Redis();$redis->connect('127.0.0.1',6379); //连接参数:ip、端口、连接超时时间,连接成功返回true,否则返回false$redis->ping(); //测试Redis有没有启动,如果启动会给你返回pong$ret = $redis->auth('123456'); // 密码认证:成功返回true,否则返回false// 二、String操作//设置键值原创 2020-06-29 17:10:00 · 284 阅读 · 0 评论 -
PHP怎么断点调试代码?
目录安装vscode安装Chinese中文扩展安装vscode下载地址安装Chinese中文扩展原创 2020-06-29 11:49:18 · 1923 阅读 · 0 评论 -
二维码的原理以及怎么生成二维码
目录一、什么是二维码:二、常用的码制三、为什么叫二维码四、二维码为什么是黑白相间的?五、QR CODE 介绍六、QR码纠错功能七、QR码的信息量和版本八、具体实现一、什么是二维码:二维码 (2-dimensional bar code),是用某种特定的几何图形按一定规律在平面(二维方向上)分布的黑白相间的图形记录数据符号信息的。二、常用的码制Data Matrix, Maxi Code, Aztec, QR Code, Vericode, PDF417, Ultracode, Code 49, C转载 2020-06-23 14:47:10 · 18031 阅读 · 0 评论 -
PHP怎么实现文件压缩与解压?
使用PHP ZipArchive 类 实现方法列表: ZipArchive::getFromName — Returns the entry contents using its name ZipArchive::getNameIndex — Returns the name of an entry using its index ZipArchive::getStatusString — Returns the status error message, system and/or zip mes.原创 2020-06-19 20:11:32 · 571 阅读 · 0 评论 -
PHP验证、过滤参数还在用正则?使用过滤器函数也可以
1. filter_has_var – 函数检查是否存在指定输入类型的变量#成功时返回 TRUE, 或者在失败时返回 FALSE。bool filter_has_var( int $type, string $variable_name)#type 可选类型INPUT_GET, INPUT_POST, INPUT_COOKIE, INPUT_SERVER, INPUT_ENV. #var...原创 2020-04-17 18:20:07 · 836 阅读 · 0 评论 -
composer 介绍、安装及基本使用方法
一、为什么要使用composer做PHP开发一定会遇到引用第三方类库的时候,而第三方类库一般都是一个整体,都有一个统一的自动加载文件autuload.php,如果在项目中只引用了一个类库,项目本身的自动加载与类库之间的依赖关系还容易解决,但是如果项目中引用了N多个第三方类库又或者引用A类库的时候发现A类库依赖于B类库,B类库又依赖于C类库,那光是解决这些类库之间的依赖引用关系就比较麻烦,而使用c...原创 2020-02-22 09:01:41 · 1284 阅读 · 0 评论 -
怎么加密PHP代码?使用Zend Guard加密PHP代码过程
Zend Guard加密PHP代码过程一、下载二、安装三、使用四、安装ZendGuardLoader扩展五、 遇到的问题一、下载到zend的官网(http://www.zend.com/en/products/guard/downloads#Windows),下载 Zend Guard,,只能下载评估版的,正式版的需要付费(区别在于经评估版加密的代码,会有大概14天的时间限制,也就是说只能...原创 2018-12-18 19:59:40 · 1733 阅读 · 0 评论 -
PHP中fileinfo的作用以及怎么开启fileinfo
作用:fileinfo的函数通过在文件的给定位置查找特定的魔术字节序列 来猜测文件的内容类型以及编码(即获取文件的MIME信息)1. 在Windows环境下开启fileinfo扩展,需要把php.ini文件中的fileinfo扩展前的分号去掉,然后重启Apache.2. 在Linux环境下开启fileinfo扩展(1)find / -name fileinfo找到fileinfo...转载 2018-11-09 10:09:13 · 21021 阅读 · 0 评论 -
PHP怎么生成xml文件?
最近遇到要生成xml文件的需求,给大家分享一下几种方式:1. 生成xml文件在本地<?php$dom = new DOMDocument('1.0', 'utf-8');$dom->formatOutput = true;//格式化输出格式$programlanguages = $dom->createElement('programlanguages');//创...原创 2018-10-22 14:52:45 · 480 阅读 · 0 评论 -
CGI与FastCGI
当我们在谈到cgi的时候,我们在讨论什么最早的Web服务器简单地响应浏览器发来的HTTP请求,并将存储在服务器上的HTML文件返回给浏览器,也就是静态html。事物总是不 断发展,网站也越来越复杂,所以出现动态技术。但是服务器并不能直接运行 php,asp这样的文件,自己不能做,外包给别人吧,但是要与第三做个约定,我给你什么,然后你给我什么,就是握把请求参数发送给你,然后我接收你的处 理结果给...转载 2018-08-02 14:31:11 · 814 阅读 · 0 评论 -
PHP中empty()、is_null()、isset()的区别
变量/函数emptyis_nullisset$a = 1falsefalsetrue$a = 0truefalsetrue$a = ' hello word'falsefalsetrue$a = ''truefalsetrue$a = 6.6falsefalsetrue$a = 0.0truefalsetrue$a = truefalsefalsetrue$a = falsetruefalsetr...原创 2018-06-21 23:12:21 · 220 阅读 · 0 评论 -
PHP单引号和双引号的区别
1. 双引号解释变量,单引号不解释变量2. 双引号里变量名后必须有特殊字符(数字、字母、下划线,中文之外的字符)才会被正确解释,或者把变量用{}包起来。否则无法正确解释,{}本身不输出3. 双引号中插入单引号,单引号中插入变量,变量能被正确解释4. 双引号解释转义字符,有些特殊字符串在字符串中不能正确解释,必须进行转义。比如说双引号里出现双引号,单引号字符串中出现单引号,常见的转义字符: ...原创 2018-06-21 22:40:10 · 341 阅读 · 0 评论