<feed xmlns="http://www.w3.org/2005/Atom"> <id>https://liyong.one/</id><title>Yong's Blog</title><subtitle>A minimal, responsive, and powerful Jekyll theme for presenting professional writing.</subtitle> <updated>2024-11-01T00:30:46+08:00</updated> <author> <name>leeyongit</name> <uri>https://liyong.one/</uri> </author><link rel="self" type="application/atom+xml" href="https://liyong.one/feed.xml"/><link rel="alternate" type="text/html" hreflang="zh-CN" href="https://liyong.one/"/> <generator uri="https://jekyllrb.com/" version="4.3.4">Jekyll</generator> <rights> © 2024 leeyongit </rights> <icon>/assets/img/favicons/favicon.ico</icon> <logo>/assets/img/favicons/favicon-96x96.png</logo> <entry><title>如何安全地重启 Laravel 任务队列让应用代码更新</title><link href="https://liyong.one/posts/%E5%A6%82%E4%BD%95%E5%AE%89%E5%85%A8%E5%9C%B0%E9%87%8D%E5%90%AF-Laravel-%E4%BB%BB%E5%8A%A1%E9%98%9F%E5%88%97%E8%AE%A9%E5%BA%94%E7%94%A8%E4%BB%A3%E7%A0%81%E6%9B%B4%E6%96%B0/" rel="alternate" type="text/html" title="如何安全地重启 Laravel 任务队列让应用代码更新" /><published>2024-10-31T00:00:00+08:00</published> <updated>2024-11-01T00:30:17+08:00</updated> <id>https://liyong.one/posts/%E5%A6%82%E4%BD%95%E5%AE%89%E5%85%A8%E5%9C%B0%E9%87%8D%E5%90%AF-Laravel-%E4%BB%BB%E5%8A%A1%E9%98%9F%E5%88%97%E8%AE%A9%E5%BA%94%E7%94%A8%E4%BB%A3%E7%A0%81%E6%9B%B4%E6%96%B0/</id> <content src="https://liyong.one/posts/%E5%A6%82%E4%BD%95%E5%AE%89%E5%85%A8%E5%9C%B0%E9%87%8D%E5%90%AF-Laravel-%E4%BB%BB%E5%8A%A1%E9%98%9F%E5%88%97%E8%AE%A9%E5%BA%94%E7%94%A8%E4%BB%A3%E7%A0%81%E6%9B%B4%E6%96%B0/" /> <author> <name>leeyongit</name> </author> <category term="后端" /> <category term="PHP" /> <summary> 要重启 Laravel 的队列工作进程，以使代码更新，可以按照以下步骤操作： 1. 发送重启信号 Laravel 提供了一个方便的命令 queue:restart，它可以安全地重启所有正在运行的队列工作进程。首先，使用以下命令： php artisan queue:restart 这个命令会向所有正在运行的队列工作进程发送信号，指示它们在处理完当前任务后退出。 2. 启动新的队列工作进程 接下来，你需要重新启动队列工作进程。在你的项目根目录下，使用以下命令： sudo -u www nohup php artisan queue:work &amp;gt; ./storage/logs/queue.log 2&amp;gt;&amp;amp;1 &amp;amp; 这会在后台启动新的队列工作进程，并将输出重定向到日志文件中。 3. 确认进程运行 你可以使用以下命令来确认新的队列进程是否已成功... </summary> </entry> <entry><title>小程序和H5之间互相跳转实现方法</title><link href="https://liyong.one/posts/web-view%E9%A1%B5%E9%9D%A2%E9%80%9A%E8%BF%87wx.miniProgram.navigateTo%E8%B7%B3%E8%BD%AC%E5%88%B0%E5%B0%8F%E7%A8%8B%E5%BA%8F%E9%A1%B5%E9%9D%A2/" rel="alternate" type="text/html" title="小程序和H5之间互相跳转实现方法" /><published>2024-10-31T00:00:00+08:00</published> <updated>2024-11-01T00:11:29+08:00</updated> <id>https://liyong.one/posts/web-view%E9%A1%B5%E9%9D%A2%E9%80%9A%E8%BF%87wx.miniProgram.navigateTo%E8%B7%B3%E8%BD%AC%E5%88%B0%E5%B0%8F%E7%A8%8B%E5%BA%8F%E9%A1%B5%E9%9D%A2/</id> <content src="https://liyong.one/posts/web-view%E9%A1%B5%E9%9D%A2%E9%80%9A%E8%BF%87wx.miniProgram.navigateTo%E8%B7%B3%E8%BD%AC%E5%88%B0%E5%B0%8F%E7%A8%8B%E5%BA%8F%E9%A1%B5%E9%9D%A2/" /> <author> <name>leeyongit</name> </author> <category term="前端" /> <category term="小程序" /> <summary> 小程序和H5之间的跳转实现方法 1. 小程序内打开H5页面 在小程序中打开H5页面只需使用 web-view 标签。例如： &amp;lt;web-view src="https://www.baidu.com" bindload="bindload" binderror="binderror"&amp;gt;&amp;lt;/web-view&amp;gt; 2. H5跳转到小程序 使用明文 Scheme 拉起小程序 开发者无需调用平台接口。在小程序账号设置 -&amp;gt; 隐私与安全 -&amp;gt; 明文 Scheme 拉起小程序声明后，可根据以下格式拼接 appid 和 path 参数生成 URL Scheme 链接。注意：通过明文 URL Scheme 打开小程序的页面 path 必须是已发布的小程序页面，不可携带 query 参数，这里以首页为例，通过首页接收参数。 ... </summary> </entry> <entry><title>laravel 验证规则大全及案例</title><link href="https://liyong.one/posts/Laravel-%E9%AA%8C%E8%AF%81%E8%A7%84%E5%88%99%E5%A4%A7%E5%85%A8%E5%8F%8A%E6%A1%88%E4%BE%8B/" rel="alternate" type="text/html" title="laravel 验证规则大全及案例" /><published>2024-10-31T00:00:00+08:00</published> <updated>2024-11-01T00:30:17+08:00</updated> <id>https://liyong.one/posts/Laravel-%E9%AA%8C%E8%AF%81%E8%A7%84%E5%88%99%E5%A4%A7%E5%85%A8%E5%8F%8A%E6%A1%88%E4%BE%8B/</id> <content src="https://liyong.one/posts/Laravel-%E9%AA%8C%E8%AF%81%E8%A7%84%E5%88%99%E5%A4%A7%E5%85%A8%E5%8F%8A%E6%A1%88%E4%BE%8B/" /> <author> <name>leeyongit</name> </author> <category term="后端" /> <category term="PHP" /> <summary> Laravel 提供了丰富的验证规则，涵盖常见的数据验证需求。以下是常用的 Laravel 验证规则及其对应的示例，帮助你更好地理解和使用这些规则。 基本验证规则 规则 描述 示例 required 必须存在字段。 'name' =&amp;gt; 'required' nullable 字段可以为空，但如果存在必须通过其他验证 'name' =&amp;gt; 'nullable' filled 字段非空时才进行验证 'name' =&amp;gt; 'filled' present 字段必须存在，但可以为空 '... </summary> </entry> <entry><title>遇到 PHP-FPM 进程占用 CPU 高达 100% 的情况时如何排查</title><link href="https://liyong.one/posts/PHP-FPM-%E8%BF%9B%E7%A8%8B%E5%8D%A0%E7%94%A8-CPU-%E9%AB%98%E8%BE%BE-100-%E7%9A%84%E6%83%85%E5%86%B5%E6%97%B6%E5%A6%82%E4%BD%95%E6%8E%92%E6%9F%A5/" rel="alternate" type="text/html" title="遇到 PHP-FPM 进程占用 CPU 高达 100% 的情况时如何排查" /><published>2024-10-10T00:00:00+08:00</published> <updated>2024-11-01T00:30:17+08:00</updated> <id>https://liyong.one/posts/PHP-FPM-%E8%BF%9B%E7%A8%8B%E5%8D%A0%E7%94%A8-CPU-%E9%AB%98%E8%BE%BE-100-%E7%9A%84%E6%83%85%E5%86%B5%E6%97%B6%E5%A6%82%E4%BD%95%E6%8E%92%E6%9F%A5/</id> <content src="https://liyong.one/posts/PHP-FPM-%E8%BF%9B%E7%A8%8B%E5%8D%A0%E7%94%A8-CPU-%E9%AB%98%E8%BE%BE-100-%E7%9A%84%E6%83%85%E5%86%B5%E6%97%B6%E5%A6%82%E4%BD%95%E6%8E%92%E6%9F%A5/" /> <author> <name>leeyongit</name> </author> <category term="后端" /> <category term="PHP" /> <summary> 当你遇到 PHP-FPM 进程占用 CPU 高达 100% 的情况时，可以通过以下几个步骤来排查和解决问题： 1. 监控进程 使用 top 或 htop 命令查看哪些 PHP-FPM 进程占用 CPU 最高。你可以通过以下命令快速查找 PHP-FPM 进程： top -c -p `pgrep -d',' php-fpm` 2. 分析慢日志 查看 PHP-FPM 的慢日志，找出响应时间较长的请求。可以在 php-fpm.conf 中设置慢日志： request_slowlog_timeout = 5s slowlog = /var/log/php-fpm/slow.log 然后检查 slow.log 文件中记录的请求，分析哪些请求可能导致高 CPU 占用。 3. 检查应用代码 高 CPU 占用通常与代码性能问题有关。你可以： 使用 Profiling 工具：如 Xde... </summary> </entry> <entry><title>基于zookeeper的锁和基于redis的锁的不同之处</title><link href="https://liyong.one/posts/%E5%9F%BA%E4%BA%8Ezookeeper%E7%9A%84%E9%94%81%E5%92%8C%E5%9F%BA%E4%BA%8Eredis%E7%9A%84%E9%94%81%E7%9A%84%E4%B8%8D%E5%90%8C%E4%B9%8B%E5%A4%84/" rel="alternate" type="text/html" title="基于zookeeper的锁和基于redis的锁的不同之处" /><published>2024-10-07T00:00:00+08:00</published> <updated>2024-11-01T00:11:29+08:00</updated> <id>https://liyong.one/posts/%E5%9F%BA%E4%BA%8Ezookeeper%E7%9A%84%E9%94%81%E5%92%8C%E5%9F%BA%E4%BA%8Eredis%E7%9A%84%E9%94%81%E7%9A%84%E4%B8%8D%E5%90%8C%E4%B9%8B%E5%A4%84/</id> <content src="https://liyong.one/posts/%E5%9F%BA%E4%BA%8Ezookeeper%E7%9A%84%E9%94%81%E5%92%8C%E5%9F%BA%E4%BA%8Eredis%E7%9A%84%E9%94%81%E7%9A%84%E4%B8%8D%E5%90%8C%E4%B9%8B%E5%A4%84/" /> <author> <name>leeyongit</name> </author> <category term="技术" /> <category term="分布式锁" /> <summary> 机制和特性的不同 基于Zookeeper和Redis的锁都是分布式锁的实现方式，但它们在机制和特性上有一些不同： 基于Zookeeper的锁 一致性： Zookeeper采用ZAB协议，提供强一致性保证。它通过临时顺序节点实现锁机制，确保获得锁的顺序性和独占性。 可靠性： Zookeeper的锁机制在客户端失去连接或崩溃时会自动释放锁，因为它依赖于临时节点。 复杂性： 实现相对复杂，需要Zookeeper集群的支持和正确配置。 性能： 由于需要持久化和同步状态，性能相对较低，但适合需要严格一致性的场景。 基于Redis的锁 一致性： Redis通常使用SET命令结合NX和PX参... </summary> </entry> </feed>
