- 博客(185)
- 资源 (15)
- 收藏
- 关注
原创 PHP:cURL error 60: SSL certificate unable to get local issuer certificate
导致该问题的原因在于没有配置curl.cainfo,该配置位于php.ini中。解决方案:http://github.crmeb.net/u/defu1)下载cacert.pemhttps://curl.haxx.se/ca/cacert.pem2)配置php.inicurl.cainfo = 【你的绝对路径】 比如:curl.cainfo = C:\Windows\cacert.pem...
2021-04-11 14:28:47 302 1
原创 crmeb多商户系统swoole进程无法启动排错教程
1、检查宝塔php命令行版本和自己程序的php版本是否一致2、检查redis扩展有没有安装,redis软件有没有启动3、检查swoole扩展是否安装 http://help.crmeb.net/crmeb_mer/18017424、检查反向代理是不是添加了,8324端口是否被占用 http://bbs.crmeb.net/thread-5376-1-1.html5、在服务器终端执行swoole进程的命令看具体的报错详细教程:http://github.crmeb.net/u/defu.
2021-04-09 09:42:25 1374 1
原创 nginx+php 手动编译全流程
系统 阿里云 CentOS-8 //注意端口开放,防火墙限制等问题,这些问题自己检查PHP 版本 7.49nginx 版本 1.18.0不说废话,直接上流程,手动编译不规定一定要用,但是一定要会。下载1、下载Nginxwget http://nginx.org/download/nginx-1.18.0.tar.gz2、下载PHPwget https://www.php.net/distributions/php-7.4.9.tar.gz安装Nginx依赖:yum install
2021-04-30 11:37:24 149
原创 macOS使用phpize安装扩展时报错
macOS使用phpize安装扩展时报错。$ phpizegrep: /usr/include/php/main/php.h: No such file or directorygrep: /usr/include/php/Zend/zend_modules.h: No such file or directorygrep: /usr/include/php/Zend/zend_extensions.h: No such file or directoryConfiguring for:PHP
2021-04-30 11:17:30 177 1
原创 再一次, 不要使用(include/require)_once
最近关于apc.include_once_override的去留, 我们做了几次讨论, 这个APC的配置项一直一来就没有被很好的实现过.在这里, 我想和大家在此分享下, 这个问题的原因, 以及对我们的一些启示.关于使用include还是include_once(以下,都包含require_once), 这个讨论很长了, 结论也一直有, 就是尽量使用include, 而不是include_once, 以前最多的理由的是, include_once需要查询一遍已加载的文件列表, 确认是否存在, 然后再加载.
2021-04-30 10:58:44 63
原创 easyswoole实现载入自定义配置文件夹所有配置文件的封装
修改easyswoole的配置类//类文件路径 //easyswoole/vendor/easyswoole/easyswoole/src/Config.php//引入File组件use EasySwoole\Utility\File;//在类中定义方法/** * 载入自定义配置文件夹里的所有配置文件 * @param string $dirPath 配置文件夹 * @param bool $merge 是否将内容合并入主配置 * @author : l
2021-04-30 10:55:02 228
原创 PHP一次请求的生命周期
一个请求进来,到达nginx或者是apache,再到php,直到出现响应,发生了什么事情PHP的运行模式1.cli:命令行模式2.CGI(common gateway interface): 公共网关接口当一个服务web-service(nginx)分配过来请求的时候,通过匹配后缀是动态的php的请求。CGI就会去读取php.ini的基本配置信息,初始化环境,创建进程,返回数据,退出进程。每一次请求都是循环往复,所以有些繁琐,这是后面为什么会诞生fastcgi的原因。fastcgi (fast
2021-04-30 10:50:38 156
原创 面向对象设计的五大原则 —— 接口隔离原则
面向对象设计的五大原则是什么? —— 接口隔离原则单一职责原则 (SRP : Single Pesponsibility Principle)接口隔离原则 (ISP : Interface Segregation Principle)开放-封闭原则 (OCP : Open-Close Principle)替换原则 (LSP : Liskov Substitution Principle)依赖倒置原则 (DIP : De-pendence Inversion Principle)它们的意义是什么?
2021-04-29 16:57:55 145
原创 PHP-Socket进程通讯的简述与使用
什么是Socket ?简单来说:Socket 是一种通讯机制,通常称为 “套接字”。应用程序通过套接字向网络发出请求或者应答网络请求。它既不是一个程序,也不是一种协议,而是操作系统提供的通信层的一组抽像的API。它对外提供了基于 TCP/IP 协议通讯能力的接口。它是一种服务,与其实现的语言无关,它是开放的,透明的,一旦运行,任何操作Socket的语言都可以访问这个开放的服务。PHP 如何使用Socket<?php set_time_limit(0); $host = '0.0.0
2021-04-29 16:48:18 86
原创 PATH_INFO模式是什么?如何解析?
一:PATH_INFO 模式是什么?PATH_INFO 模式是伪静态的一种。我们可以使用PATH_INFO来代替Rewrite来实现伪静态页面, 另外不少PHP框架也使用PATH_INFO来作为路由载体伪静态页面是静态URL与动态URL互通的一个桥梁,它是指动态网址通过URL重写的手段去掉其动态参数,使URL静态化,但在实际的网页目录中并没有重写URL。简单来说,伪静态URL就是通过服务器转换伪装文件名或地址,使该页面类似于静态页面,但服务器上没有独立存在的文件,其本质还是动态页面。PATH_IN
2021-04-29 16:45:04 2926
原创 对象池、连接池的意义
这次我们来讲讲对象池、连接池的意义,在此之前我们先了解学习一些其他的基础知识,以便我们结合理解池的意义。nginx与php-fpm的进程模型nginx采用多进程模型,启动之后的进程将包含一个master和多个worker进程。master是worker的父进程,主要职责是用来管理worker进程的。向worker进程发送信号,如通知退出监控worker状态,当worker退出后(无论正常异常),可以重新启动新的worker。可以实现从容重启:master进程在接收到信号后,会先重新加载配置,然后
2021-04-29 16:39:09 119
原创 PHP框架结构设计-异常机制
引入异常机制时,需要想清楚下面几个问题1、有哪些代码需要使用异常? 理论上讲,异常可以用在任意地方,但是如果滥用异常,会导致异常链比较复杂,异常处理也比较低效2、是否所有异常都需要处理? 内核部分,应该由php自行处理,业务部分,更倾向于向外抛出异常,使异常更容易被观察3、如何处理?捕获吞掉还是向外抛出?同上框架结构中对异常处理的设计 – 异常的统一处理,分拣处理,自定义处理引入对异常的统一处理,一般在框架的 bootstrap 脚本中进行对异常的接管.//自定义的异常处理方法 public
2021-04-29 16:18:49 64
原创 冒泡排序
什么是冒泡排序?冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序(如从大到小、首字母从Z到A)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列),就如同碳酸饮料中二氧化碳的气泡最终会上浮到顶端一样,故名“冒泡排序”。PHP代码实现:$arr = [1,3,4,6,9,8,2,7
2021-04-29 16:14:16 69 1
原创 phpstudy mysql数据库启动不了问题解决教程
之前的电脑上下了mysql,phpstudy自带一个mysql,目测是本来的mysql进程占用端口。1、按win+R键,输入 services.msc找到mysql服务,关闭2、再以管理员身份运行在这里插入图片描述一定要用管理员身份运行,我的问题这种方法解决了,其他的问题没遇到过。...
2021-04-28 14:35:58 1843
原创 curl: (77) error setting certificate verify locations
解决措施:就是在本地找到该文件,然后根据提示创建该目录,把找到的文件放在该目录下即可发现缺少ca-bundle.crt认证文件找不到,这个时候就需要我们先找到这个文件放在那里,可以使用强大的搜索工具everything,查看这个认证文件被放置在什么地方发现文件在这里(只要找到这个文件即可)E:\Program Files\Git\mingw64\ssl\certs\ca-bundle.crt然后根据给出的提示,先创建一个该路径,然后将该文件copy一份放在这个目录下面[2020-06-30 21
2021-04-28 14:18:13 2664
原创 抽象类与接口的区别
抽象类定义为抽象的类不能被实例化。任何一个类,如果它里面至少有一个方法是被声明为抽象的,那么这个类就必须被声明为抽象的。被定义为抽象的方法只是声明了其调用方式(参数),不能定义其具体的功能实现。继承一个抽象类的时候,子类必须定义父类中的所有抽象方法,这些方法的访问控制必须和父类中一样(或者更为宽松)。语法<?phpabstract class AbstractClass{ //抽象方法 -- 强制要求子类定义这些方法 // 我们的抽象方法仅需要定义需要的参数 a
2021-04-28 11:39:43 43
原创 Cookie的概念与应用
一:Cookie是在远程浏览器端存储数据并以此跟踪和识别用户的机制,客户端(浏览器)通过HTTP和服务端进行Cookie交互,Cookie是由浏览器实现并管理的,根据浏览器的存储策略不同,Cookie可以保存在浏览器内存或文件中。二:Cookie 是由服务器发送到浏览器的变量。cookie 通常是服务器嵌入到用户计算机中的小文本文件。每当同一台计算机通过浏览器请求页面时,就会发送这个 cookie。三:Cookie通常用来存储一些不是很敏感的信息,或者进行登录控制,购物车,免密登录等。四:每个域名下允
2021-04-28 11:22:19 327
原创 Cookie跨域与CORS协议
什么是跨域?所谓跨域,意思就是跨过了浏览器的同源策略。同源指的是三个相同:协议相同域名相同端口相同违反同源策略会有以下限制:Cookie、LocalStorage、IndexDB无法获取DOM无法获得AJAX请求不能发送CORS解决跨域什么是CORS?2014年W3C发布了 CORS Recommendation 使资源共享变得更方便,默认情况下,浏览器对跨域请求不会携带Cookie,但鉴于Cookie在身份验证等方面的重要性,CORS推荐使用额外的响应头字段来允许跨域发送Cooki
2021-04-28 11:16:04 265
原创 PHP,Nginx,Apache的跨域配置
上一章我们有讲过关于CORS协议的跨域协议头,接下来我们从php,nginx,apache三个方面来讲一下分别如何配置跨域PHP代码中配置//服务端代码//json头 header("Content-type: application/json"); //跨域CORS header("Access-Control-Allow-Credentials: true"); header("Access-Control-Allow-Origin: 跨域URL"); header("Access-Co
2021-04-28 11:11:40 182
原创 MySQL常用引擎对比
MySQL中支持的存储引擎有十几种,但是常用的存储引擎就那么几个,想要好的性能,首先就要选择合适的数据库引擎。常见的数据库引擎有三种,我们来看看它们之间的对比:存储引擎的选择大概业务判断:(1)采用MyISAM通常用来做记录的表,表现形式为 读多写少并发不高,不需要事务(2)采用InnoDB涉及到事务并发高,涉及数据量大更新频繁(3)采用Memory足够的内存对数据一致性要求不高,例如在线人数等需要定期归档的数据...
2021-04-28 11:02:26 218
原创 GET 和 POST 到底有什么区别?看完你就不会懵逼了,也不用再和小伙伴撕逼了
最近在整理关于http协议的内容时,突然想到了一个有趣且常见的问题。相信很多小伙伴,看到网上很多大佬的文章,有些文章讲到GET和POST有很多区别,有些文章讲它们没有区别,(???问号脸)到底有没有区别啊喂~~~~~其实,有无区别,要看从什么角度去看这个提问,从2个角度去分析,你就看得懂,他们到底在讲什么1、协议的本质无区别(人是碳基生物,所以人类无区别):从HTTP协议去看,GET和POST本质上,都是TCP链接,没有太大的区别。GET和POST能做的事情是一样一样的。给GET加上request
2021-04-27 17:20:14 124
原创 HTTP 协议请求概述
1、建立一个连接(TCP三次握手)HTTP是一个基于TCP协议的应用层协议,由请求和响应构成,另外还有HTTPS,是以安全为目标的HTTP通道,是HTTP协议加上SSL协议层的安全加密传输,另外TLS也是SSL的升级(具体关系不详细说,有兴趣的同学可以百度)那么我们在建立一个连接的时候需要经历3个步骤(三次握手):(1)Seq序号(sequence number):占32位,用来标识从TCP源端向目的端发送的字节流,发起方发送数据时对此进行标记。(2)确认号(acknowledgement num
2021-04-27 16:31:48 346
原创 简单谈谈PHP的GC-垃圾回收机制
PHP目前的开发框架,除了主流常用的FPM框架,想必就是基于swoole拓展的常驻内存开发了。我们在FPM的开发模式中,每一次脚本程序结束之后,所有变量都会被销毁,内存会被释放,所以我们不用太担心。但是常驻内存开发模式就不一样了,如果不注意变量内存的使用,无法很好的管理内存问题,会造成内存泄露。所以,我们一定要熟悉PHP的垃圾回收机制(Garbage Collector 简称GC)写时复制与引用计数写时复制在PHP7+版本中,有关于变量内存的操作特性,采用了写时复制,也就是说, 在必要的时候才会
2021-04-27 15:57:12 596
原创 crmeb知识付费系统安装完成后,打开后台报语法错误
处理方法:1.检查项目的PHP版本,如不是PHP7.1,请切换到php7.1(方法见‘切换PHP版本‘)2.检查 swoole-loader是否配置完成(方法见‘swoole-loader安装教程‘)精品源码推荐:http://github.crmeb.net/u/defu...
2021-04-27 14:50:04 249
原创 PHP生成器的运用 yield 关键字
生成器提供了一种更容易的方法来实现简单的对象迭代,相比较定义类实现 Iterator 接口的方式,性能开销和复杂性大大降低。生成器允许你在 foreach 代码块中写代码来迭代一组数据而不需要在内存中创建一个数组, 那会使你的内存达到上限,或者会占据可观的处理时间。相反,你可以写一个生成器函数,就像一个普通的自定义函数一样, 和普通函数只返回一次不同的是, 生成器可以根据需要 yield 多次,以便生成需要迭代的值。我们用伪代码来举个例子:直接遍历:<?php//普通遍历$User = n
2021-04-27 14:18:15 170
原创 一个关于nginx+php 的性能优化小测试
准备工作一台ECS服务器手动编译nginx+php修改index.php ,输出 ‘hello world’用ab工具,ab -c 100 -n 50000 ,连续5次,记录压测的qps平均值。想办法去优化,调整各种参数。每次调整一个参数有发现QPS提高,那就记录下来,并思考qps瓶颈是在哪Nginx 一些基本配置的描述user administrator administrators; #配置用户或者组,默认为nobody nobody。worker_processes 2; #允许生
2021-04-27 14:12:59 408
原创 crmeb 单商户v4商城系统本地运行后台前端后台可视化页面空白
解决方法:将标注的代码改成自己的域名即可完整实例:http://github.crmeb.net/u/defu
2021-04-26 16:07:02 480
原创 找出字符串中,连续重复次数最多的字符
今天在群聊中,有个群友给一道这样的面试题,记录一下,需要找出连续重复最多的,而不是重复最多的。<?php function get_repstr ($str){ $str_arr = str_split($str); //把字符串分割到数组 $map_arr = array_flip(array_unique($str_arr)); //去重,并把键-值交换 $over_arr = []; //结果容器 for ($i=0; $i<strlen($s
2021-04-26 14:59:45 1466 2
原创 Vue+tp6 php框架如何快速建立一个前后端分离项目
作者主要是写后端的,所以本文主要以后端的角度,讲如何使用Vue+Tp框架结合,快速打通一个前后端分离的项目部署,可以作为后端学习Vue的入门步骤,通过此教程,你可以学到在生产环境和本地环境中,vue+tp 等框架是如何结合以及部署的。提示:1、写本文章时,代码环境在Windows 系统下,本地使用PHPstudy集成环境讲解。2、本文章主要向初学Vue的后端同学讲解Vue与后端基础的结合使用3、如果有看过Vue的文档,并且学习过基础语法以及使用,会使你更易理解下面的内容。一:安装 Node 环境
2021-04-26 14:47:15 5126 4
原创 thinkphp6 常用方法文档
请求变量use think\facade\Request;Request::param('name');Request::param();全部请求变量 返回数组Request::param(['name', 'email']); 多个变量Request::param('a','1') $a不存在使用默认值1Request::param('username','','strip_tags'); 参数过滤 去掉html标签 htmlspecialchars转换成实体入库 strtolower小写R
2021-04-26 14:37:56 439
原创 服务器出现卡顿几个处理技巧
如果想做中大型网站,就需要使用服务器来建网站。服务器优良的特性能够给用户很好的体验。但服务器并不是万能的,虽然服务器出现卡顿的现象比较少见,但也不排除出现的可能,而服务器一旦出现卡顿,造成的后果会严重的多。这里分享几个避免卡顿的处理技巧,希望能有所帮助。一、及时更新系统良好的服务器管理是及时地更新系统,这并不是一件困难的事,但能做到的人却不多。及时更新系统的好处不仅在于能修复漏洞,降低安全风险,还可以在服务器出现问题时,避免“请您升级最新版本”这个尴尬的提示,从而减少故障排查的时间。但更新系统也需要
2021-04-26 14:23:44 3179
原创 ECS服务器安装宝塔面板后默认用户名密码
首先登录ECS服务器管理后台,点击【云服务器】;在【云服务器】管理界面,点击【远程连接】,选择【Workbench远程连接】;在远程连接命令界面上输入以下命令:bt default按ENTER确认键后,就可以显示默认用户名和密码了。默认的入口地址是"http://云服务器IP地址:8888",需要开启8888端口。...
2021-04-26 14:21:09 523
原创 Windows环境服务器怎么创建网站
方法/步骤第一步:远程登录WINDOWS服务器,进入WINDOWS服务器远程桌面;第二步:点击远程桌面上的【建站助手】;注意:首次运行网站管理助手,会弹出“系统配置”窗口,一般情况下只需要检查站点开设目录是否存在,如果不存在,请先手工建立目录。强烈建议保持我司的默认配置环境,不要修改mysql、php的安装路径,建议D:\wwwroot目录作为网站目录,出现问题时方便核查原因。如图:第三步:创建站点。点击【网站管理助手】软件界面的“创建站点”,如下图:第四步:填写网站各项信息。网站信息包
2021-04-26 14:15:42 487
原创 crmeb 多商户系统降级swoole到4.5.2版本教程
首先在 php.ini 中删除 extension=swoole.so然后在服务器终端执行 pecl install http://pecl.php.net/get/swoole-4.5.2.tgz 执行这个命令会出现以下错误解决办法将下面框起来的那一排被禁用的函数在php里面删除,如图:重启php,然后再执行上面的命令进行安装,然后会提示如下:enable sockets supports? [no]一路回车会进入下面的页面,直到安装完成ok这样就安装完成了,然后在php配置文件中
2021-04-26 14:07:33 316
原创 宝塔面板服务器内存使用率高的彻底解决方法
如果我们建中大型的网站,特别好使用服务器来建网站。很多使用服务器建网站的站长都会遇到这样的问题:自己服务器安装的宝塔面板的内存使用率很高,有时达到90%-100%,会造成服务器出现卡顿。如下图:怎么解决服务器内存占有率如此之高呢?下面介绍一下宝塔面板服务器内存使用率高的解决方法。(相关教程:服务器视频教程)方法/步骤卸载多余的PHP版本。有些站长,在服务器宝塔面板中,安装了多个PHP版本,甚至把 php 5.3、5.4、7.0、7.3 全都安装上了,这会严重增加系统负载和内存使用率。建议只保留ph
2021-04-25 15:40:23 4755
原创 code been used, hints: [ req_id: XYv1Ha07042046 ]
public function index(){ $code = input('get.code'); $tool = new Wxtool(); if (empty($code)) { $url = 'http://www.layton.top/wx/Receive'; $tool -> getCode($url, 2); }else { $tool -> getWebAccessToken($code); }} public function get
2021-04-25 15:13:13 184
原创 微信小程序域名合法校验报错解决
1、项目调试阶段在微信开发者工具中,详情页-本地设置,勾选不校验合法域名即可勾选后就可以在项目中随意操作请求2、项目上线上线必须要求域名合法,域名必须是https,需要将域名添加到小程序管理后台1、登录微信公众平台2、左侧找到开发3、选开发设置4、开始配置域名这样就配置好了合法域名...
2021-04-25 14:27:48 1023
原创 crmeb 多商户系统适配最新小程序授权方案
微信小程序官方关于登录、授权接口做了相应调整,对应多商户系统需修改如下位置:对照下图修改对应文件中的代码Uni-app按下图修改最终修改后的完整代码<template> <view> <view class='Popup' v-if='isShowAuth'> <view class="logo-auth">
2021-04-25 11:43:38 607
原创 PHP项目对接阿里云OSS对象存储实例
一个完整的配置流程我们分以下几步走,可以减少配置难度。(详情请参照阿里云对象存储文档)在阿里云开通阿里云对象存储oss功能安装对象存储oss的 PHP SDK;详细请看官方文档我们可以在系统后台添加对象存储oss桶的功能(创建储存空间)存储空间(Bucket)是存储对象(Object)的容器。对象都隶属于存储空间。本文介绍如何创建存储空间。 <?phpif (is_file(__DIR__ . '/../autoload.php')) {require_once __DIR__ . '
2021-04-25 11:27:31 909
原创 php对接腾讯云对象存储
实际开发中,我们不可能把所有的图片,视频和附件等,都放在和站点同一个服务器上,因为这会占用我们大量的服务器带宽和资源我们一般去对接各种云服务商的对象存储,例如腾讯云,阿里云,又拍云,七牛云等,将我们的大文件上传到这些云的对象存储上,可以节省很大一部分服务器流量开支,而且对象存储的带宽也要比服务器大的多,用户体验也很好腾讯云对象存储对接demo这里引入了腾讯云对象存储的sdk,文末有完整demo包<?php //获取文件后缀名$suffix_name = strrchr($_FILES['
2021-04-25 11:03:46 820
火鸟地方门户系统V6.8 2021年最新火鸟门户地方门户系统至尊版
2022-09-09
CRMEB V4.x标准版小程序公众号H5+App拼团砍价秒杀分销商城源码
2022-02-18
CRMEB JAVA版公众号小程序h5 app商城源码
2021-07-14
CRMEB 知识付费系统公众号h5课程源码
2021-07-14
CRMEB-v4标准版小程序公众号h5商城源码
2021-07-14
TA创建的收藏夹 TA关注的收藏夹
TA关注的人