首页
关于
Search
1
给你10个市场数据调研报告的免费下载网站!以后竞品数据就从这里找!
182 阅读
2
php接口优化 使用curl_multi_init批量请求
144 阅读
3
《从菜鸟到大师之路 ElasticSearch 篇》
107 阅读
4
2024年备考系统架构设计师
104 阅读
5
PHP 文件I/O
92 阅读
php
thinkphp
laravel
工具
开源
mysql
数据结构
总结
思维逻辑
令人感动的创富故事
读书笔记
前端
vue
js
css
书籍
开源之旅
架构
消息队列
docker
教程
代码片段
redis
服务器
nginx
linux
科普
java
c
ElasticSearch
测试
php进阶
php基础
登录
Search
标签搜索
php函数
php语法
性能优化
安全
错误和异常处理
问题
vue
Composer
Session
缓存
框架
Swoole
api
并发
异步
正则表达式
php-fpm
mysql 索引
开发规范
协程
dafenqi
累计撰写
786
篇文章
累计收到
28
条评论
首页
栏目
php
thinkphp
laravel
工具
开源
mysql
数据结构
总结
思维逻辑
令人感动的创富故事
读书笔记
前端
vue
js
css
书籍
开源之旅
架构
消息队列
docker
教程
代码片段
副业
redis
服务器
nginx
linux
科普
java
c
ElasticSearch
测试
php进阶
php基础
页面
关于
搜索到
560
篇与
的结果
2024-11-01
test
连读辅元连读元元连读什么时候用w,发它的音是圆唇的,如no new now,过渡到另外一个音就用/w/其他情况用j辅辅连读叠合、失爆、击穿和同化叠合前一个单词的结尾辅,后面一个单词开头辅,前一个音很自然的过渡到后一个音,叠起来像是只读一个音的感觉失爆当第一个单词以爆破音ptk结尾第二个单词以辅音开头前面的爆破音失去爆破只保持口型或舌位,但不释放气流 即不发前面的爆破音(ptk)
2024年11月01日
4 阅读
0 评论
0 点赞
2024-06-12
mysql的双机热备
一般主从复制是主服务器数据库可读可写,从服务器数据库只读,而双机热备是主从服务器的数据库双向复制,从服务器数据库可读也可写。说到主从复制不得不说--读写分离,此介绍请看这一篇 一文浅谈“读写分离”技术 双机热备的概念简单说一下,就是要保持两个数据库的状态自动同步。对任何一个数据库的操作都自动应用到另外一个数据库,始终保持两个数据库数据一致。 这样做的好处多。可以做灾备,其中一个坏了可以切换到另一个。可以做负载均衡,可以将请求分摊到其中任何一台上,提高网站吞吐量。 对于异地热备,尤其适合灾备。主从复制原理当主服务器上的数据发生变化的时候,主服务器会把这些变化记录到一个日志文件中,然后通知从服务器,从服务器会拉取这个日志文件中的变化信息,然后做出相应的数据变化。主从复制配置和启动可以参考这一篇高性能Mysql主从架构的复制原理及配置详解。实现步骤如下:确定主从:确定主从复制服务器。创建主服务器复制用户:在主服务器上创建用于复制的用户,并为其授予适当的权限,用来给从服务器复制。配置主服务器:在每台服务器上配置主服务器的 my.cnf 文件。配置从服务器:在每台服务器上配置从服务器的 my.cnf 文件。在从服务器启动复制:启动复制进程,并确保数据正常传输。简略实现过程:配置主从服务器的my.cnf其中主服务器的my.cnf修改log-bin=mysql-bin server-id = 1从服务器的my.cnf修改,要指定从服务器同步的博客数据库log-bin=mysql-bin binlog_format=mixed server-id = 2 relay_log = mysql-relay-bin log_slave_updates = 1 read_only = 0 # 需要读写分离则这里填1,只读 replicate-do-db = myblog_db主从服务器都重启下mysql。创建主服务器复制用户在主服务器上操作mysql> GRANT REPLICATION SLAVE,RELOAD,SUPER ON *.* TO backup1@'从服务器ip' IDENTIFIED BY 'ErTu2QSGzs1'; Query OK, 0 rows affected, 1 warning (0.00 sec) mysql> show master status; +------------------+-----------+--------------+------------------+-------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set | +------------------+-----------+--------------+------------------+-------------------+ | mysql-bin.000024 | 734078947 | | | | +------------------+-----------+--------------+------------------+-------------------+ 1 row in set (0.00 sec)在从服务器启动复制在从服务器上操作mysql> CHANGE MASTER TO MASTER_HOST='主服务器ip', MASTER_USER='backup1', MASTER_PASSWORD='ErTu2QSGzs1', MASTER_LOG_FILE='mysql-bin.000024', MASTER_LOG_POS=0; Query OK, 0 rows affected, 2 warnings (0.03 sec) mysql> START SLAVE; mysql> SHOW SLAVE STATUS\G 主从复制常见的问题1、server-id重复 Last_IO_Errno: 1593 Last_IO_Error: Fatal error: The slave I/O thread stops because master and slave have equal MySQL server ids; these ids must be different for replication to work (or the --replicate-same-server-id option must be used on slave but this does not always make sense; please check the manual before using it).2、数据库的键值重复 Last_Errno: 1062 Last_Error: Error 'Duplicate entry '166127' for key 'PRIMARY'' on query. Default database: 'xxx'. Query: 'INSERT INTO xxx'解决方法:1、重新导入主从数据库,保持一致,并且设置LOG_POS为最新的。1.1 导入主从数据库 命令行(不是在 MySQL)执行导出博客数据表结构。 mysqldump -u your_username -p --no-data your_database_name > structure.sql 在这个命令中: -u your_username 是你的数据库用户名 -p 表示需要输入密码 --no-data 选项表示只导出结构,不包含数据 your_database_name 是你的数据库名称 > structure.sql 表示将导出的内容保存到 structure.sql 文件中 1.2 设置LOG_POS为最新的 首先在主库上查看 mysql> show master status; +------------------+-----------+--------------+------------------+-------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set | +------------------+-----------+--------------+------------------+-------------------+ | mysql-bin.000022 | 372102960 | | | | +------------------+-----------+--------------+------------------+-------------------+ 1 row in set (0.00 sec) 在从库上操作 START SLAVE;STOP SLAVE; CHANGE MASTER TO MASTER_HOST='主服务器ip', MASTER_USER='backup1', MASTER_PASSWORD='ErTu2QSGzs1', MASTER_LOG_FILE='mysql-bin.000024', MASTER_LOG_POS=372102960; #从372102960行后开始复制 mysql> START SLAVE; mysql> SHOW SLAVE STATUS\G3、主服务器数据库连接失败 Last_IO_Errno: 2003 Last_IO_Error: error connecting to master ...排查:(1) 在配置文件中排查了与bindaddress和skip-networking与相关参数后,均没有配置;(2) 于是排查服务器的防火墙,发现防火墙处于开启状态(3) 关闭防火墙后,重新执行start slave;发现主从配置成功。配置没错大多是防火墙问题,没有放行mysql的3306端口双机热备实现步骤如下:在两台服务器上配置主从复制:每台服务器既是主服务器又是从服务器。创建复制用户:在两台服务器上创建用于复制的用户,并为其授予适当的权限。配置主服务器:在每台服务器上配置主服务器的 my.cnf 文件。配置从服务器:在每台服务器上配置从服务器的 my.cnf 文件。启动复制:启动复制进程,并确保数据正常传输。在主从复制的基础上,修改主服务器 my.cnf 文件(主服务器也当成从服务器,即让主服务器复制从服务器)。relay_log = mysql-relay-bin log_slave_updates = 1 read_only = 0 replicate-do-db = myblog_db配置主服务器复制从服务器步骤跟主从复制一样在从服务器上操作mysql> GRANT REPLICATION SLAVE,RELOAD,SUPER ON *.* TO backup2@'主服务器ip' IDENTIFIED BY 'ErTu2QSGzs2'; Query OK, 0 rows affected, 1 warning (0.00 sec) mysql> show master status; +------------------+----------+--------------+------------------+-------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set | +------------------+----------+--------------+------------------+-------------------+ | mysql-bin.000022 | 2747685 | | | | +------------------+----------+--------------+------------------+-------------------+ 1 row in set (0.00 sec)在主服务器上操作mysql> CHANGE MASTER TO MASTER_HOST='从服务器ip', MASTER_USER='backup2', MASTER_PASSWORD='ErTu2QSGzs2', MASTER_LOG_FILE='mysql-bin.000022', MASTER_LOG_POS=0; Query OK, 0 rows affected, 2 warnings (0.03 sec) mysql> START SLAVE; mysql> SHOW SLAVE STATUS\G以上配置完毕。参考:一文浅谈“读写分离”技术 Mysql-Master-Slave主从配置(1) 高性能Mysql主从架构的复制原理及配置详解mysql 双主从复制原理(双机热备)
2024年06月12日
11 阅读
0 评论
0 点赞
2024-06-12
让你的博客实现负载均衡
零、缘起有时候博客突然挂了,发现服务器厂商出了问题,很忧伤,我正在写着或查阅自家博客那种不可xx的内容。这时想着,如果这个博客有负载均衡就好了,空了想着实现下。一分钟了解负载均衡的一切选择第二种【反向代理层->站点层】的负载均衡,基于nginx的反向代理技术,需要一个负载均衡服务器。一、购买服务器,作为负载均衡代理服务器买腾讯云按量付费服务器,我看了下这个配置,后面好像选按小时计算付费,每小时花0.09(流量0.01和云硬盘0.08),一天2.16,这个机子用来调试,部署负载均衡代理。二、登录服务器,安装配置nignx安装nginx yum install -y nginx查看nginx配置文件[root@xx ~]# whereis nginx nginx: /usr/sbin/nginx /usr/lib64/nginx /etc/nginx /usr/share/nginx /usr/share/man/man3/nginx.3pm.gz /usr/share/man/man8/nginx.8.gz [root@xx ~]# cat /etc/nginx/nginx.conf启动nginx[root@xx ~]# which nginx /usr/sbin/nginx [root@xx ~]# /usr/sbin/nginx [root@xx ~]# ps -ef | grep nginx root 5092 1 0 21:18 ? 00:00:00 nginx: master process nginx nginx 5093 5092 0 21:18 ? 00:00:00 nginx: worker process nginx 5094 5092 0 21:18 ? 00:00:00 nginx: worker process root 5148 3331 0 21:18 pts/0 00:00:00 grep --color=auto nginx三、代码实现在http模块下增加修改以下代码 upstream test { server ip:8080;# 端口不能为80 server ip:8081; } server { listen 80; server_name localhost;#负载均衡服务器的ip或域名 client_max_body_size 1024M; location / { proxy_pass http://test; proxy_set_header Host $host:$server_port; } [root@xx ~]# /usr/sbin/nginx -t nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful [root@xx ~]# /usr/sbin/nginx -s reload搞负责均衡是为了高可用,如果这个负责均衡只是对于没啥流量博客而言,起到流量均衡负载到不同服务器的作用,那没啥用。下一篇讲关于主从复制的内容。参考:一分钟了解负载均衡的一切nginx 手册
2024年06月12日
16 阅读
0 评论
0 点赞
2024-06-11
简易发邮件
/* * 第三方发邮件接口 https://luckycola.com.cn/public/docs/shares/api/mail.html { "ColaKey": "i6qNeQszeSD6zf16988I2YaRNIMz",// 官网获取 "tomail": "1537@163.com",// 邮件发给谁? "fromTitle": "我是邮件标题",// 邮件标题 "subject": "我是邮件主题", // 邮件系统授权码,参考[获取文档]:https://blog.csdn.net/qq_48896417/article/details/133903185?spm=1001.2014.3001.5501 "smtpCode": "GNNSC*******TWU", // 开启授权码对应的授权邮箱 "smtpEmail": "example@163.com", // 授权邮箱的类型, 可取值是 qq 或 163 或 126 "smtpCodeType": "163", "isTextContent": false,// 邮件内容是否是纯文本形式 "content": "<div style='color: red'>我是邮件内容(因为isTextContent=false所以我可以解析html标签,是红色的)</div>",// 邮件内容 } */ public function sendMail($toemail = "", $subject = "", $content = "", $fromUserInfo = "admin") { $params = []; $params["ColaKey"] = "xx"; $params["tomail"] = $toemail; $params["fromTitle"] = $fromUserInfo; $params["subject"] = $subject; $params["content"] = $content; if (strpos($toemail,"@163") !== false) { $params["smtpCode"] = "xxx";//授权码有效期180天 $params["smtpEmail"] = "xxx@163.com"; $params["smtpCodeType"] = "163"; } elseif (strpos($toemail,"@qq") !== false) { $params["smtpCode"] = "xxx"; $params["smtpEmail"] = "xx@qq.com"; $params["smtpCodeType"] = "qq"; } $mail_url = "https://luckycola.com.cn/tools/customMail"; $rs_str = curl($mail_url, $params); $rs = json_decode($rs_str,true); if (isset($rs["code"]) && $rs["code"] == 0) { $this->logfile("发送邮件成功 --> ". $rs_str); } else { $this->logfile("发送邮件失败 --> ". $rs_str); } // 使用php内置mail函数发邮件,需要启动postfix服务(systemctl start postfix)且 放行外网25端口 // ini_set("SMTP", "smtp.163.com"); // ini_set("smtp_port", "25"); // $tomail = "xx@qq.com"; // 收件人邮箱地址 // $title = "邮件主题"; // $content = "邮件内容"; // $sendermail = "sender@example.com"; // $headers = "From: {$sendermail}"; // 发件人邮箱地址 // // //发送邮件 // $rs = mail($tomail, $title, $content, $headers); // if ($rs) { // exit("ok"); // } else { // exit("邮件发送失败"); // } } // 调用 // $tomail = "xx@qq.com"; // 收件人邮箱地址 // $subject = "邮件主题"; // $content = "邮件内容"; // $fromUserInfo = "发送方"; // $this->sendMail($toemail, $subject, $content, $fromUserInfo);另外稳定可用的第三方服务接口
2024年06月11日
15 阅读
2 评论
0 点赞
2024-05-28
Linux下卸载与安装Composer
卸载如果您尝试了上述步骤但未能成功卸载Composer,可能是由于权限或其他配置问题。您可以尝试以下方法来彻底卸载Composer:1. 查找Composer安装位置:在终端中执行以下命令,以查找Composer的安装位置:which composer这将显示Composer可执行文件的实际路径。您可以使用这个路径来手动删除Composer文件。2. 手动删除Composer文件:使用上一步中找到的Composer文件路径,您可以执行以下命令手动删除Composer文件:rm /path/to/composer请将/path/to/composer替换为您在第一步中找到的Composer文件路径。3. 清除Composer缓存:有时Composer会在全局位置或用户主目录下创建缓存文件,您可以尝试手动清除这些缓存文件。在终端中执行以下命令:rm -rf ~/.composer这将删除用户主目录下的Composer缓存文件。4. 验证卸载:最后,您可以通过在终端中运行composer命令来验证Composer是否已成功卸载。如果Composer已成功卸载,您将会看到类似“command not found”之类的消息。[root@xx ~]# composer -bash: /usr/bin/composer: No such file or directory看起来在您的系统上,Composer已经被删除了,但是系统仍在尝试执行Composer命令。这可能是因为之前的安装过程中创建了一些链接或者配置文件,导致系统仍然尝试执行已经删除的Composer命令。您可以尝试更新系统的命令缓存,以确保系统不再尝试执行已删除的Composer命令。在终端中执行以下命令:hash -r这个命令将清除当前shell的命令缓存,这样系统就会重新查找可执行文件的位置。安装执行下面命令,分别是下载Composer安装脚本验证安装脚本运行安装脚本删除安装脚本移动Composer可执行文件验证安装(如果一切顺利,能够看到Composer的版本信息)php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" php -r "if (hash_file('sha384', 'composer-setup.php') === 'dac665fdc30fdd8ec78b38b9800061b4150413ff2e3b6f88543c636f7cd84f6db9189d43a81e5503cda447da73c7e5b6') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;" php composer-setup.php php -r "unlink('composer-setup.php');" mv composer.phar /usr/bin/composer composer --version参考:Composer下载页面
2024年05月28日
29 阅读
0 评论
0 点赞
1
2
...
112