- 博客(21)
- 收藏
- 关注
原创 分库,分表,分库分表的应用场景
分库,分表,以及分库分表的应用场景是截然不同的,他不是一件事,而是三件事,根据下面实际情况,而进行优化操纵:1.只分库不分表:当数据库的读写qps过高(QPS(每秒Query量) :show global status like 'Question%'; ),导致数据库链接不足,这个时候就要考虑做分库了,通过增加数据库实例的方式,来提供更多的可用数据库链接,从而提升系统的并发度。2.只分表不分库:因为数据库链接不高,但是数据库的查询和读写遇见了瓶颈,所以考虑采用水平分表(一般按照时间维度分表)。通过分散
2022-04-16 15:16:11
847
原创 [php] 系统奔溃了,网站响应慢了,你是如何快速定位错误信息的?
最大连接数 4000 的数据库 ,并发量 300 就崩了,什么原因?mysql层:1.连接没有关闭2.sql 执行的时间过长,导致连接一直被占用业务层:业务层的处理时间过长导致系统奔溃[php] 系统奔溃了,网站响应慢了,你是如何快速定位错误信息的?...
2022-04-10 17:25:45
2970
原创 协程知识记载
线程是cpu最小的调度单位协程又称为用户态线程,为什么叫用户态线程呢,因为协程是用户可以调度的线程,而线程是cpu调度的,所以协程cpu是无感知的,其通过协作而不是抢占来进行切换。相对于进程或者线程,协程所有的操作都可以在用户态完成,创建和切换的消耗更低。协程是进程的补充,或者是互补关系。要理解是什么是“用户态的线程”,必然就要先理解什么是“内核态的线程”。内核态的线程是由操作系统来进行调度的,在切换线程上下文时,要先保存上一个线程的上下文,然后执行下一个线程,当条件满足时,切换回上一个线程,并恢复上下
2022-04-10 17:13:00
821
原创 Laravel框架RPC解决方案--Hprose
Hprose for LaravelHPROSE 是 High Performance Remote Object Service Engine 的缩写,翻译成中文就是 “高性能远程对象服务引擎”。Hprose是一个先进的轻量级的跨语言跨平台面向对象的高性能远程动态通讯中间件。它不仅简单易用,而且功能强大。它支持众多语言,例如nodeJs, C++, .NET, Java, Delphi, Objective-C, ActionScript, JavaScript, ASP, PHP, Python,
2022-02-18 13:55:46
3080
转载 php垃圾回收机制
一、概念垃圾回收机制是一种动态存储分配的方案。它会自动释放程序不再需要的已分配的内存块。垃圾回收机制可以让程序员不必过分关心程序内存分配,从而将更多的精力投入到业务逻辑。在现在的流行各种语言当中,垃圾回收机制是新一代语言所共有的特征,如Python、PHP、C#、Ruby等都使用了垃圾回收机制。二、PHP垃圾回收机制1、在PHP5.3版本之前,使用的垃圾回收机制是单纯的“引用计数”。即:①每个内存对象都分配一个计数器,当内存对象被变量引用时,计数器+1;②当变量引用撤掉后(执行unset()后),
2022-01-23 22:40:31
1442
原创 如何保证缓存数据库读写一致性
一、只先删缓存问题:先删缓存,在改库前,其他事务又把旧数据放到缓存里去了。二、只后删缓存问题:改了库,清理缓存前,有部分事务还是会拿到旧缓存三、普通双删问题:第一次清空缓存后、更新数据库前:其他事务查询了数据库hang住第二次清空缓存后:其他事务更新缓存,此时又会把旧数据更新到缓存四、为什么需要延时双删?在三中,第二次清空缓存之前,多延时一会儿,等B更新缓存结束了,再删除缓存,这样就缓存就不存在了,其他事务查询到的为新缓存。延时是确保 修改数据库 -> 清空缓存前,其他事务的更
2022-01-23 11:14:18
799
原创 laravel 开启redis队列 守护进程 supervisor
1.使用redis作为队列,修改config的queue配置,修改.nev QUEUE_CONNECTION = redis2.创建执行队列的工作类,php artisan make:job TestJob, 这个时候会在 项目目录/app/Jobs目录中发现job文件3.然后我们在这个job类的handle方法中编写对应的操作,这个handle方法是每次队列出一条任务的时候回去执行里面的步骤,如果存在异常会导致任务失败,将会进行任务的重试我们写一条最简单的打印任务进行测试: public func
2022-01-19 10:01:35
1415
转载 编译安装PHP组件出现错误提示内存不足:virtual memory exhausted Cannot allocate memory
背景前面一篇我们介绍了宝塔面板的PHP默认不安装fileinfo组件,需要手动编译安装。在php5.6上是没有出现问题,但是在编译php7.1的版本的make && make install这一步出现错误,提示:virtual memory exhausted: Cannot allocate memoryMakefile:197: recipe for target 'libmagic/apprentice.lo' failed下面是make编译后的详细信息:/www/serv
2022-01-17 22:21:39
499
原创 composer私有包搭建
当使用这样的composer.json安装私有包时:1.token{ "require": { "foobar/example-package": "dev-master" }, "repositories": [{ "type": "vcs", "url": "git@gitlab.com:foobar/example-package.git" }]}composer config --global --auth {
2022-01-12 23:36:55
571
原创 部署git代码三种方式
Command line instructionsYou can also upload existing files from your computer using the instructions below.Git global setupgit config --global user.name "xxx"git config --global user.email "xxx@qq.com"Create a new repositorygit clone http://120.31
2022-01-12 11:25:44
379
原创 nginx配置location相关信息
server { listen 80; server_name loc.tc.com m-loc.tc.com; root /var/www/tc-front-api/public; index index.php index.html index.htm; #访问 http://loc.tc.com/enterprise/abc # alias : 直接访问 1./var/www/test/dist/ + abc 2./var/www/test/dist/
2022-01-07 17:28:59
1530
原创 nginx proxy_pass 转发
nginx中的rewrite到外部url会导致post的参数丢失,所以放弃该方案。(内部的rewrit是不会丢失post数据)原因:(1)post的时候,参数是存放在message body中传递的,对于内部的url调转,因为是相同的一次请求,所以message body(request body)没变,所以post数据不会丢失。(2)而对于外部跳转,实际上是一次302,即用户在请求了一次,所以第二次就不会post第一次的数据了。具体如下:你post数据之后,匹配到rewrite之后,因为是外部的u
2022-01-06 14:43:11
1339
原创 下载远程文件到客户端
//设置无下载时间限制ini_set(‘max_execution_time’, ‘0’);//下载文件需要用到的头header(“Content-type:application/octet-stream”);Header(“Content-Disposition: attachment; filename=”.$file_name);Header(“Accept-Ranges: bytes”);//Header(“Accept-Length:”); //读取文件内容并直接输出到浏览器
2021-12-30 10:51:27
156
原创 fread()和readfile()fread()区别
fread()和readfile()fread()最大一次性能读取8k长度的字节数,所以不能一次性读取大文件去作下载。优势在于,操作更加灵活,每次读取指定字节的内容,用于下载时方便控制服务器的流量。readfile()优势是能够一次性读取大文件;不需要PHP预读到内存,下载速度更快,直接把文件的处理交由服务器。缺点就是不能控制负载。所以它是没有内存限制的,如果遇到报内存错误,先调用ob_end_flush()之类的函数关闭缓冲区。file_get_contents也是没readfile()快,因为也是走了
2021-12-29 20:22:43
1634
原创 微信jssdk分享安卓出现图片无法分享的原因
微信jssdk分享安卓出现图片无法分享,而IOS却可以,需要将图片的域名添加到公众号JS接口安全域名中。
2021-11-30 14:29:59
1889
原创 TCP协议为什么是三次握手?
因为在不可靠的信道上保证信息的可靠传输的这一需求导致的,最小值是3次确认,通俗易懂就是:A:你好,能听到我说话吗?B:可以,你呢?A:我也能听到。
2021-11-22 10:20:33
1124
原创 nginx lua 根据参数指向不同location
正则匹配链接和获取参数,利用lua根据参数指向不同location 代码块如下:server { listen 80; server_name loc.lua.com; index index.php index.html; root /var/www/course-front-api/public; location ~ ^(.*)/\.svn/ { return 404;break; } location = /
2021-11-16 17:51:48
2187
原创 swoft-cli
在swoft-devtool组件中使用php bin/swoft dclient:ws /echo命令连接WebSocket服务器,可以看到如下所示的连接成功消息如果要查找已经注册的swoft路由,包括库里面的,可以查找:IP:PORT(HOST)/__devtool/http/routes 然后根据里面来找想要找的路由http://host/wstestphp swoftcli.phar run -c ws:start -b bin/swoft /var/www/teenmay/teenmay
2021-11-08 15:28:16
969
原创 ps -aux详细解释
ps -aux详细解释ps-aux 显示其他用户启动的进程(a)查看系统中属于自己的进程(x)启动这个进程的用户和它启动的时间(u)使用“date -s”命令来修改系统时间比如将系统时间设定成1996年6月10日的命令如下。#date -s 06/10/96将系统时间设定成下午1点12分0秒的命令如下。#date -s 13:12:00USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMANDroot 1 0.0 0.0 134
2021-11-08 11:53:05
16612
原创 linux常用指令
查看某个用户的crontab任务crontab -l -u username变更用户组来执行脚本的命令,超级用户除外,需要键入该使用者的密码。su [-fmp] [-c command] [-s shell] [–help] [–version] [-] [USER [ARG]]#案例su -c " #!/bin/bash cd /data/wwwroot/www.teenmay.cn/teenmay-api && /usr/local/php/bin/php /data/w
2021-11-08 11:48:29
268
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人