首页
关于
Search
1
阿里云rds数据库mysql版cpu占用100%排查问题过程
1,384 阅读
2
解决Gitlab进行clone、push、pull的时候报错aborting due to possible repository corruption on the remote side. git-pack-objects died with error.index-pack failed问题
1,282 阅读
3
nginx、php-fpm、thinkphp接口请求偶尔返回502导致前端报CORS跨域错误问题
819 阅读
4
使用VMware Workstation pro 15安装黑苹果后,开机卡在logo的问题
753 阅读
5
mysql查询某个字段有两条重复记录的SQL语句
580 阅读
计算机
数据库
Linux
PHP开发
前端
好文收藏
产品
创业
天天向上
阅读
工作
登录
Search
标签搜索
PHP
ss
pdo
mysql
php8
阅读
摘抄
PHP后端开发技术学习
累计撰写
104
篇文章
累计收到
1
条评论
首页
栏目
计算机
数据库
Linux
PHP开发
前端
好文收藏
产品
创业
天天向上
阅读
工作
页面
关于
搜索到
69
篇与
PHP开发
的结果
2023-10-03
团队Git分支管理与协作方式(基于分支发布版本)
前言毕业时进了一家小型项目外包公司,代码版本管理工具用的是SVN,几个人开发一个项目时,每个人开发完自己的功能后,使用svn commit提交代码到仓库,然后配置的勾子会自动把代码拉到测试环境,测试通过之后,在正式环境的服务器使用svn update命令将代码更新到最新版本。平时下班前会提交代码到仓库,如果遇到某个同事开发进度较慢,要优先发布其它同事完成的功能,就需要将没开发好的功能代码先注释掉,或者等到那个同事开发完再进行发布,那时候也没有深入研究svn有没有更好的办法解决这种问题。在第二家公司用的是GIT,在开发新能时,首先会基于master分支创建一个新版本分支,例如2.7.1分支,用来开发2.7.1版本,然后参与这个版本开发的人员,从这个2.7.1分支再切一个属于自己的分支,例如feature-basil-2.7.1,开发完成后发起合并到2.7.1请求,通过之后拉取代码到测试环境测试,测试通过只有,再把2.7.1合并到master,然后拉取代码到正式环境,那时候只知道按照这样的流程走,没搞清楚为什么要这样搞,后面用的多了,就渐渐明白了一些git的分支管理与多人协作方式。接下来讲的是目前所在公司的Git代码管理与协作方式。基于分支发布的代码管理与协作方式分支说明 主要包括6个分支,常驻分支有production、dev、test、preOnline,临时分支有feature、hotfixproduction生产分支用于生产发布,保存着最新生产环境的代码,不允许在此分支上直接修改,只能通过preOnline分支进行合并preOnline预上线分支用于预上线测试,不允许在此分支上直接修改,只能通过feature或hotfix分支进行合并test测试分支用于测试,不允许在此分支上直接修改,只能通过其它分支进行合并dev开发分支用于开发,不允许在此分支上直接修改,只能通过其它分支进行合并feature功能分支基于production,用于开发新功能hotfix bug修复分支基于production,用于修复bug开发场景工作流说明新功能开发例如A、B两位同事共同开发feature-1.0.0版本,这时候一般会划分为两个模块,一人负责一个模块。首先从production分支切出feature-1.0.0分支,然后A和B分别从feature-1.0.0分支切出自己的本地分支feature-1.0.0-A和feature-1.0.0-B,A、B开发完后将本地feature-1.0.0-A和feature-1.0.0-B合并到feature-1.0.0分支,接着再将feature-1.0.0分支合并到dev分支,合并到dev分支后自动部署到开发环境,在开发环境上进行开发联调,联调完成之后将feature-1.0.0合并到test分支自动部署到测试环境,测试通过之后将feature-1.0.0合并到preOnline分支自动部署到预上线环境,预上线测试完成之后,将preOnline分支合并到production分支自动部署到生产环境,至此,多人进行新版本开发从编写代码到发布上线就完成了。bug修复 如果生产环境出现bug,则从production分支切出hotfix分支,修改完bug之后,将hotfix分支合并到dev分支进行开发调试,调试完成之后将hotfix分支合并到test分支进行测试,测试完成之后将hotfix分支合并到preOnline分支进行预上线测试,预上线测试通过之后将preOnline分支合并到production分支发布到生产环境。答疑为什么使用feature以及hotfix分支合并到test、preOnline分支,而不是将dev合并到test,然后将test合并到preOnline?因为dev分支用于开发联调,可能包含了其它可能版本或者没有开发好的代码,如果使用dev分支合并到test和preOnline就会把其它版本或者没有开发好的代码更新到测试环境或者预上线环境,而使用feature或者hotfix分支单独合并到test、preOnline,则可以单独更新开发好的版本或者模块,就算多个同事开发同一个版本,某个同事开发的模块没有完成,要延后发版,也可以先发其他同事开发好的模块。如果多个同事共同开发一个版本,每个人负责不同的模块,但每个模块有共用的代码怎么办?大家沟通之后,某个同事可以将共用的代码在自己的分支写好,然后再合并到共用分支,然后其他同事再将共用分支合并到自己的分支进行复用,例如上面新功能开发场景的A同事将公用代码在自己的feature-1.0.0-A分支上写好之后,合并到feature-1.0.0分支,B同事将feature-1.0.0分支合并到自己的feature-1.0.0-B分支后就可以复用公用代码了。为什么在开发新功能的时候已经有了feature分支了,每个人还有基于这个feature分支创建一个属于自己的分支?因为每个人负责的模块不一样,而这两个模块的耦合性可能没那么高,可以将某个模块单独发布,这样的话可以对模块进行单独发布,而不必等两个模块开发好了再发布。补充说明这套git代码分支管理方式是基于分支通过Jenkins等工具进行自动部署代码的,dev对应开发环境、test对应测试环境、preOnline对应预上线环境、production对应生产环境。这是根据目前公司的情况所摸索出来的git分支管理与协作方式,可能还有很多需要优化的地方,个人见识有限,欢迎批评指正,提出宝贵的优化建议。
2023年10月03日
201 阅读
2023-09-19
服务器使用WDCP面板添加网站避坑指南
事件场景最近需要给boass添加www.boass.com域名进行直接访问,而不是通过www.boass.com跳转到boass.hopo.com.cn进行访问,添加完成后,达到两个域名都可访问boass的目的。解决的方案是取消www.boass.com解析到boass.hopo.com.cn,而改为解析到120.25.xxx.xxx正式环境服务器,同时下载SSL证书,然后通过服务器的WDCP面板新增www.boass.com域名,上传证书,并且把网站目录指向跟boass.hopo.com.cn一致。操作过程遇到的问题以及解决办法(针对前端项目)问题一:网站添加完成后,访问内容变成了WDCP默认页面的内容原因:新增网站时,WDCP面板会使用默认的index.html文件替换掉已经存在于指定文件夹中的index.html文件,因此会导致开发人员所写的index.html文件被覆盖,访问内容变成了WDCP面板默认的内容。解决办法:新增网站前,如果指定目录中已存在index.html文件,则先备份好,添加好网站后再恢复。或者添加好网站后,再将源代码重新部署到指定文件夹。问题二:新增网站后,导致其它域名配置文件丢失原因:如果当前新增的网站指向的目录与已存在的网站所指向目录一致时,会导致已存在网站的配置文件丢失(域名.conf),这应该是WDCP面板的问题。解决办法:使用WDCP面板添加网站后,会在/www/wdlinux/nginx/conf/vhost目录生成两个配置文件,一个是conf后缀,另一个wdcp后缀,丢失的是起作用的conf后缀文件,需要基于wdcp后缀的文件重新复制一份与域名名称一致并以conf为后缀的文件(将wdcp后缀文件去掉就是正确的名称),然后重启Nginx服务(service nginxd restart)。问题三:添加网站(或解决配置文件丢失)后,访问域名返回503错误原因:相关网站配置文件location中的try_files指令配置错误,如下location / { try_files $uri @apache; }或location / { try_files $uri $uri/ /?$args; }具体原因可网上搜索Nginx关于try_files指令相关说明,导致了需要手动在域名后输入index.html才能进行访问,不然会返回503错误。解决办法:需要将conf文件中location部分配置成如下内容方可解决问题。location / { try_files $uri $uri/ /index.html; }问题四:将网站删除后重新添加,网站访问异常或者SSL证书不生效原因:这种情况下,WDCP需要重启Nginx服务才能生效解决办法:重启Nginx,目前105服务器重启命令为:service nginxd restart总结使用WDCP添加网站时,如果网站目录指向与已存在网站所指向的目录一致,建议提前备份配置文件;添加前端项目的网站时,需要注意避免index.html入口文件被覆盖的问题;修改相关配置文件后不生效,考虑重启Nginx服务。
2023年09月19日
98 阅读
2023-09-15
Debian10添加虚拟内存
要在Debian 10上启用虚拟内存,您可以按照以下步骤操作:打开终端并以root用户身份登录。使用文本编辑器(如nano或vi)打开/etc/fstab文件:sudo nano /etc/fstab在文件的末尾添加以下行来创建一个交换分区文件:/swapfile none swap sw 0 0保存并关闭文件。创建交换分区文件:sudo fallocate -l 2G /swapfile设置文件的权限:sudo chmod 600 /swapfile格式化交换分区文件:sudo mkswap /swapfile启用交换分区文件:sudo swapon /swapfile检查交换分区是否已启用:sudo swapon --show如果您希望系统在每次启动时自动启用交换分区,可以编辑/etc/sysctl.conf文件:sudo nano /etc/sysctl.conf在文件的末尾添加以下行:vm.swappiness=10 vm.vfs_cache_pressure=50保存并关闭文件。重新启动系统以使更改生效:sudo reboot完成上述步骤后,您的Debian 10系统将启用虚拟内存。
2023年09月15日
144 阅读
2023-08-17
win10如何检测域名txt解析是否设置成功
使用nslookup命令nslookup -qt=txt _acme-challenge.boass.com
2023年08月17日
125 阅读
2023-08-16
elasticsearch6.5.0设置密码并用php连接
首先,您需要安装并配置Elasticsearch 6.5.0。确保您的Elasticsearch实例正在运行,并且您可以使用curl访问它。使用curl命令设置Elasticsearch的密码。打开命令行终端,运行以下命令:curl -XPOST -u elastic 'http://localhost:9200/_security/user/elastic/_password' -H 'Content-Type: application/json' -d '{"password" : "your_password"}'请将your_password替换为您要设置的实际密码。这将设置elastic用户的密码。在PHP脚本中连接Elasticsearch。使用以下PHP代码连接Elasticsearch: <?php require 'vendor/autoload.php'; // 如果您使用的是Composer,请引入自动加载的文件 $client = \Elasticsearch\ClientBuilder::create() ->setBasicAuthentication('elastic', 'your_password') ->build(); $params = [ 'index' => 'your_index', 'type' => 'your_type', 'id' => 'your_id', 'body' => ['your_field' => 'your_value'] ]; $response = $client->index($params); print_r($response); ?>确保将上面的代码your_password替换为您设置的实际密码,your_index,your_type和your_id替换为您要索引的实际数据。运行上述PHP脚本,它将连接到Elasticsearch实例并将数据索引到指定的索引和类型中。
2023年08月16日
184 阅读
2023-08-01
PHP使用JAVA生成的DER格式RSA私钥进行数据加密(美团企业版对接)
背景使用PHP对接美团企业版接口,美团没有提供PHP版的SDK,只提供了Java版的SDK,提供的RSA私钥格式是base64,PHP不能直接使用,需要转换成pem格式才能使用。解决办法使用PHP先将私钥进行base64解码然后保存到private.der文件 $appPrivateKey = "xxxxx" $appPrivateKey = base64_decode($appPrivaateKey); file_put_contents('private.der', $appPrivateKey);使用OpenSSL命令将private.der转成private.pem openssl rsa -inform DER -outform PEM -in private.der -out private.pem使用PHP读取私钥并使用 $appPrivateKey = openssl_pkey_get_private(file_get_contents('private.pem'));
2023年08月01日
143 阅读
2023-08-01
PHP使用SHA1WITHRSA 签名示例
<?php $data = 'hello world'; // 待签名的数据 $pemKey = '-----BEGIN RSA PRIVATE KEY----- MIICXgIBAAKBgQCjn9+t/6NzbRf0d7MUifeyJDNHxnlZT5iGDhpOc+KzvzQ97ldz 3ymWipC9vQOwcL3dFzDZU5yRFHJ69zq3BVm0JCstztIbTW1Wsj7kg5nZQ/aoiiEs lWPNVQ82sjuPQdShlFoT5kYOy/ii6vdsc+V5vUvMH8BJ29wl+Vc7lQz2JwIDAQAB AoGBAJIl9JGkdkpT+KZ+Zzp9KxeWjmem9dKv6O6BMVQqRKogQ1KCkCnD6MQX8g4Z +GXNweqXGzYsI5EJTeKRcnZzaI4ABWvR3PWdzt7QYJboXNZA6yqZ7GZ0NeYqYt57 z8wuGqxx6Zsy/7VkU9qsDEzDpe+n7E4s9B6eQEPLboUF8ZGBAkEAz4IIj3NUCVDp z77PxJLjK5Z5XoVLYRQw174zp3Tur6zJfUv7S2zKqFdqvNuU46Pklhg+e/05xls5 KQL1z8rfcgJBANj5JfNrNLcl5uGCEJsoWSWvOpR86KwwlP9KH+SzWVlqkFyBDsT7 JVs1KtuHeBLJA4Z7Kz0XWUMMFuXcDJNXJj8CQB7EInUPxw0JZzRgyHYW/B3VX3HP pwweX0+QDkCNO/fU7/BlWWhVrbRH+93exNUFkKo+g1rc/B97VxXMOU31QlMCQBXh 4SAyPiNfSxkn+yyTeJdQpdbkaOt2pb4g2cojHsT3H4kLFKvDG6BgZainp/N9w6B2 5Y06h1/j87An+1G6YekCQQCF/pQ1WTxA6d/R6PejyFgZlSN2Kq866h3azpoSJB5 WTaVxX+F2JTfpTi+08/TUGiazZx8rBmy6wsIg9GOJvMC -----END RSA PRIVATE KEY-----'; // RSA 私钥 $privateKey = openssl_pkey_get_private($pemKey); openssl_sign($data, $signature, $privateKey, OPENSSL_ALGO_SHA1); echo base64_encode($signature); // 输出签名值 openssl_free_key($privateKey); ?>需要注意的是,需要有 OpenSSL 扩展才能使用 openssl_pkey_get_private() 和 openssl_sign() 函数。同时,要确保私钥已正确生成,格式为 PEM 格式。
2023年08月01日
117 阅读
2023-07-19
MySQL使用FIND_IN_SET函数查询数据为空
想要查询表中user_id字段包含31556的数据,一开始使用以下语句查询不出结果SELECT * FROM `cor_diy_solution` WHERE FIND_IN_SET( '31556','user_id');后来发现user_id字段如果用单引号是不会识别成字段名的,需要用``括住才行SELECT * FROM `cor_diy_solution` WHERE FIND_IN_SET( '31556',`user_id`);这样查询就有数据了
2023年07月19日
108 阅读
1
2
3
...
9