大家好,我是码农先森。 唬住了50k,唬不住就5k。这句话一直是PHP程序员之间相互吹捧、吹牛逼的笑点,每次面试过后都会挠挠头上仅剩的几根头发,回想自己是否吹牛逼会过了头。我经常在微信程序员撕逼群里,看到群友因为某个技术点而争执不休,时而讨论这个技术能不能在面试过程中突出自己的水平,从而拉高档次砍到高工资,但是又怕自己吹的技术漏出破绽,使自己在这场面试中尴尬的黯然离场。面试其实是一门技术活,有些人技术水平高但又谈不到高工资,反而有部分人技术水平不咋地工资却确挺高的,你说气不气人,况且这种现象还不少。 大家应该都有不少的面试经历,面对不同的面试官,需要使出各种各样招数和技能,遇到钻一点的面试官...

  F5Pid34CNfer   8天前   28   0   0 PHP

大家好,我是码农先森。 我们在某宝或某多多上抢购商品时,如果只是下了订单但没有进行实际的支付,那在订单页面会有一个支付倒计时,要是过了这个时间点那么订单便会自动取消。在这样的业务场景中,一般情况下就会使用到延时队列。 通常在客户下单之后,就会将订单数据推送到延时队列中并且会对该消息设置一个延时时长,比如设置五分钟、十分钟、或十五分钟等,具体的时长应该还是要结合当前的业务进行衡量,然后消费端会在指定时间到达后就对该消息进行支付支付状态判断,如果已经支付则不予处理,要还是未支付,则会取消该订单,并且释放商品库存。 我们这次分享的内容,主要是基于Redis延时队列的实现方式,当然除了Redis还可以...

  F5Pid34CNfer   11天前   25   0   0 PHP

大家好,我是码农先森。 谈到这个话题有些朋友心中不免会有疑惑,为什么是Swoole而不是其他呢?因为Swoole是基于C/C语言开发的高性能异步通信扩展,覆盖的特性足够的多,有利于PHP程序员接触更全面的技术知识点。大多数的朋友踏入到PHP的大门都是因其简单的语法及其弱类型的特性,还有各种集成环境安装包、简单易用的框架,随随便便就可以快速的搞出一个系统,这就让PHP在我们心中落下的「简单易用」的印象。 这种印象就注定了PHP程序员在编写代码的过程中,怎么简单怎么来,随便的很,不瞒你说我还见过用中文来命名变量的,这简直颠覆了我的编程认知,好歹你用拼音也比中文强吧。不过为了良好的编程习惯,最好还是...

  F5Pid34CNfer   22天前   44   0   0 PHP

大家好,我是码农先森。 在PHP的编程实践中多进程通常都是在cli脚本的模式下使用,我依稀还记得在多年以前为了实现从数据库导出千万级别的数据,第一次在PHP脚本中采用了多进程编程。在此之前我从未接触过多进程,只知道PHP-FPM进程管理器是多进程模型,但从未在编程中进行实践。多进程虽然能带来效率上的提升,但依然会带来不少的问题,如果初学者使用多进程,那注定会遇到各种奇奇怪怪的Bug比如并发操作数据库引起死锁、共用内存变量资源造成串数据、忘记回收进程资源导致产生孤儿进程、僵尸进程等。反正如果我们长期都是PHP-FPM模式下编程的话,在使用多进程编程时需要慎之又慎,避免出现意想不到的问题。不过这次...

  F5Pid34CNfer   27天前   55   0   0 PHP

大家好,我是码农先森。 大多数的业务场景下PHP还没有达到性能瓶颈,然而MySQL数据库就先行驾崩了。但我们总是不分青红皂白,一股脑的把原因归结于是PHP语言不行了,每当遇到这种情形我就会感叹到PHP的命真苦啊。PHP作为一门优秀的开源编程语言,在编程语言界一直享有「PHP是世界上最好的语言」的美誉,它让PHP靓仔们养了家糊了口过上了小康生活,但一遇到点性能问题就被疯狂的吐槽,它真是干了件吃力不讨好的活。当然我相信这种吐槽是少数的,绝大数的人都还是会秉承理性公正的眼光来看待PHP语言,在碰到问题时会仔细分析缘由,找到问题的症结并解决它,让PHP绽放属于它自己的光芒。 还记得在之前的工作经历中...

  F5Pid34CNfer   29天前   67   0   0 PHP

大家好,我是码农先森。 在早些年前客户端想要实时获取到最新消息,都是使用定时长轮询的方式,不断的从服务器上获取数据,这种粗暴的骚操作实属不雅。不过现如今我也还见有人还在一些场景下使用,比如在PC端扫描二维码,然后使用长轮询的方式从服务端获取最新的扫码信息,来判断用户是否已经扫码完成,诸如这种场景还有不少。其实大家都知道长轮询的方式不好,那为什么还有人使用呢? 我想最直接的原因就是「开发起来简单明了」,人性决定了人类都是趋易避难的高级物种,那个容易上手就用那个。但是我想表达的是除了长轮询的方式外,WebSocket技术其实也不难,只不过对于从来没有接触过长连接的人来说,刚开始上手时会有一些思维...

  F5Pid34CNfer   2024年08月15日   46   0   0 PHP

大家好,我是码农先森。 守护进程顾名思义就是能够在后台一直运行的进程,不会霸占用户的会话终端,脱离了终端的控制。相信朋友们对这东西都不陌生了吧?如果连这个概念都还不能理解的话,建议回炉重造多看看Linux进程管理相关的基础知识。在我们日常的编程中常见有类似phpthink...、phpartisan...、phpyii...等命令启动需要一直执行的任务,都会通过nohup挂载到后台保持长期运行的状态。同样在Workerman中也是使用类似phpindex.phpstart的命令来启动进程,但不同的是它不需要利用nohup便可以挂载到后台运行。那有些朋友就会好奇它是怎么实现的呢?为了解决朋友们的...

  F5Pid34CNfer   2024年08月12日   48   0   0 PHP

大家好,我是码农先森。 树挪死,人挪活,这个需求我做不了,换个人吧。大家都有过这种经历吧,放在编程语言身上就是PHP不行了,赶紧转Go语言吧。那转Go语言就真的行了?那可不见得,我个人认为这只是一种缓解焦虑转移注意力的方式罢了。有些朋友想尝试转Go语言或者正在路上了,在这个过程当中都会遇到思维转换的困境,这种困境往往就是编程习惯的路径依赖,总是会以PHP的编程思维去学习Go语言,这样的学习方式也造成了很多人在Go语言的学习道路戛然而止了。 困境 困境一词在大家的编程生涯中应该不止一次出现了吧,每天解决无数的Bug也就相当于无数次从困境的泥潭中脱出。那么这一次我想说的是PHP程序员转型Go语言...

  F5Pid34CNfer   2024年08月08日   42   0   0 PHP

大家好,我是码农先森。 经常听到身边写Java、Go的朋友提到程序异步、非阻塞、线程、协程,让系统性能提高到百万、千万并发,使我甚是惊讶属实羡慕。对于常年写PHP的我来说,最初听到这几个词时,脑袋一直处于蒙圈状态,回过头来看着自己手上同步阻塞的PHP代码,心想着「异步、非阻塞、线程、协程」到底是个什么东东,这么厉害嘛。其实PHP中也有线程、协程,但在日常的编程中几乎不会使用,原因是PHP-FPM多进程模式下并不支持线程、协程,使用PHP编程的程序员绝大多数都离不开PHP-FPM。这也就导致了PHP程序员对那些概念没有接触,那就更别提理解了,因此为了广大的PHP程序员同胞们能够和Java、Go的...

  F5Pid34CNfer   2024年08月07日   58   0   0 PHP

大家好,我是码农先森。 在日常的开发过程中经常会遇到对时间的处理,比如将时间戳进行格式化、获取昨天或上周或上个月的时间、基于当前时间进行加减等场景的使用。在PHP语言中有一个针对时间处理的原生函数strtotime,大家都知道这个函数只能满足基本的使用,如果遇到比较复杂的场景,则处理起来会比较繁琐。PHP作为世界上最好的语言,在这个问题面前自然会有大佬出来造轮子,由此就出现了nesbot/carbon扩展包。其实在Go语言中也有同样功能的第三方库carbon,我看过介绍文档后,惊呼到简直和PHP的扩展包长的一摸一样,看样子这位Go大佬也是从PHP转过去的。这样的好事直接降低了我们的学习成本,让...

  F5Pid34CNfer   2024年08月07日   47   0   0 PHP

大家好,我是码农先森。 在这个大家都崇尚高性能的时代,程序员的谈笑间句句都离不开高性能,仿佛嘴角边不挂着「高性能」三个字都会显得自己很Low,其中众所皆知的Nginx就是高性能的代表。有些朋友可能连什么是高性能都不一定理解,其实高性能就是单位时间内能处理更多的客户端请求,如果要问具体能处理多少请求,这个就要结合软硬件条件来评估了,感兴趣的朋友可以在定性的条件下使用压力测试工具对自己的程序进行测试。 大家都知道PHP-FPM是PHP的进程管理器,每一次来自Ngixn转发过来的客户端请求,都会交由一个PHP-FPM子进程进行处理,在同一时刻一个子进程只能处理一个客户端请求,如果想要同一时刻能处理多...

  F5Pid34CNfer   2024年08月07日   43   0   0 PHP

大家好,我是码农先森。 回想起以前用模版渲染数据的岁月,那时都没有API接口开发的概念。PHP服务端和前端HTML、CSS、JS代码混合式开发,也不分前端、后端程序员,大家都是全干工程师。随着前后端分离、移动端开发的兴起,用后端渲染数据的开发方式效率低下,已经不能满足业务对需求快速上线的要求了。于是为了前后端的高效协同开发引入了API接口,只要在开发需求之前约定好数据传参,之后便可以开始启动自己的开发任务且互不干涉,最后再进行统一的接口联调。 根据熵增原则,如果任何事情不加以规则来限制,则都会朝着泛滥的方式发展。同样API接口开发也会出现这样的情况,由于每个人的开发习惯不同,导致API接口的...

  F5Pid34CNfer   2024年08月07日   55   0   0 PHP

大家好,我是码农先森。 面临现状 这次为什么要讨论这个话题,因为Swoole和Go在PHP程序员坊间一直都是茶语饭后的谈资,觉得懂Swoole和Go的就高人一等。相信有很多的PHP程序员,自打Swoole发布以来就从来没有使用过。还记得Swoole官方有一遍入门文章中曾建议学习Swoole之前,先学习Liunx操作系统、TCP/UDP网络协议栈、Socket通信等基础知识,作为7天入门、30天精通PHP的靓仔们,面对这些基础知识不屑一顾,还会不时的反问,这些东西难道影响我CURD了? 在我的工作经历中遇到过这样的三类人,首先是:常年在Window系统下使用一键安装包phpStudy的PHP程...

  F5Pid34CNfer   2024年08月07日   34   0   0 PHP

大家好,我是码农先森。 我之前待过一个做ToB业务的公司,主要是研发以会员为中心的SaaS平台,其中涉及的子系统有会员系统、积分系统、营销系统等。在这个SaaS平台中有一个重要的角色「租户」,这个租户可以拥有一个或多个子系统的使用权限,此外租户还可以使用平台所提供的开放API「即OpenApi」来获取相关系统的数据。有了OpenApi租户可以更便捷的与租户自有系统进行打通,提高系统之间数据的传输效率。那么这一次实践的主要内容是OpenApi的授权设计,希望对大家能有所帮助。 我们先梳理一下本次实践的关键步骤: 给每一个租户分配一对AppKey、AppSecret。 租户通过传递AppKey...

  F5Pid34CNfer   2024年08月07日   30   0   0 PHP

大家好,我是码农先森。 PHP唯一的爽点就是开发起来「哇真快」这刚好和外包公司的需求相契合,在Web领域的芒荒年代PHP以王者姿态傲视群雄。如果PHP敢说第二,就没有哪门子语言敢称第一,连Java都要礼让三分。我刚开始出来工作时,就误入了长沙一家常年在猪八戒网上接单的外包公司,公司所有的项目都用PHP来开发,前后端也不分离,团队成员都是全干工程师。 相信大多数的PHPer或多或少都有前后端通吃的经历,拥有这样类似伪全栈技术的PHP程序员,正是外包公司所热衷的,招聘的HR小姐姐都对你面面相觑。一上来就能干活,有时候还是一个人直接干一个项目,都省去了沟通的环节,那效率相当杠杠的。用武侠剧中的情节...

  F5Pid34CNfer   2024年08月07日   32   0   0 PHP

大家好,我是码农先森。 一次偶然看到了国外某机构针对PHP周边生态框架及扩展的性能测试排行榜,看到Workerman竟遥遥领先Swoole。在我们PHP程序员现有的认知里,Swoole作为一个基于C/C语言编写的扩展程序,性能居然落后了。第一眼看到这个结果的时候,我的心情久久不能平复,脑子里不经的浮现着「难道C/C比PHP的性能还差了?」。 说到Workerman和Swoole,就想起了那不争气的PHP-FPM。这么多年以来,但凡PHP-FPM在异步通信领域能有所建树,也就没有Workerman和Swoole什么事了。Workerman在测试排行榜上能达到Top1想必有其过人之处,那我来说说...

  F5Pid34CNfer   2024年08月07日   58   0   0 PHP

大家好,我是码农先森。 从PHP转到Go的朋友,常常会因为没有便捷的工具函数而感到苦恼。PHP写的多了就会形成路径依赖,在写Go的时候时不时就会想到PHP强大的数组函数。当然写Go的PHPer也想拥有这么强大的工具函数,在这个开源的编程世界总有一些伟大的程序员做着贡献,正是有了他们的存在,因此便有了lancet这样一个强大的Go语言工具函数库,下面我介绍一些常用的工具函数「文末附上了手册地址」。 ContainChinese验证字符串是否包含中文字符。 import( "fmt" "github.com/duke-git/lancet/v2/validator" ) funcmain(){ ...

  F5Pid34CNfer   2024年08月07日   52   0   0 PHP

大家好,我是码农先森。 说到HTTP请求工具想必对我们做Web开发的程序员都不陌生,只要涉及到网络请求都必须使用。对于我们PHP程序员来说,最熟悉不过的就是CURL扩展,只要安装的这个扩展便可随意发起HTTP请求。但在PHP语言中还有一个很好用的Composer包「guzzlehttp/guzzle」,相信大家只要做PHP开发的都接触过。 转到Go语言后,有些人也会在想Go中有没有这样的工具包呢?说实话,我从事Go语言开发这么挺久,也始终没有发现有类似guzzle这么好用的工具包。我想其中的原因可能是Go语言的官方标准库中提供了「net/http」工具,这个也能满足日常的开发需求,大家也就没有...

  F5Pid34CNfer   2024年08月07日   80   0   0 PHP

大家好,我是码农先森。 1994年我出生在湖南的农村,就在同年加拿大的拉斯姆斯·勒多夫创造了PHP,这时的PHP还只是用Perl编写的CGI脚本。或许是时间的巧合PHP变成了我后半生谋生的手段,当时拉斯姆斯·勒多夫写这些脚本的目的,只是为了统计自己网站的访问者。就是这样一个简单的目的就诞生了「世界上最好的语言PHP」,伟大的事业往往是最简单的开始。这些用Perl编写的CGI脚本,可以认为是PHP的雏形,亦或是称为PHP的第一个版本「PHP1.0」也不为过。 据说下面这段代码是PHP第一个版本,不知大家有没有似曾相似的感觉。 <!--include/text/header.html--&g...

  F5Pid34CNfer   2024年08月07日   48   0   0 PHP

大家好,我是码农先森。 现状 传统的PHP-FPM也是多进程模型的的运行方式,但每个进程只能处理完当前请求,才能接收下一个请求。而且对于PHP脚本来说,只是接收请求和响应请求,并不参与网络通信。对数据库资源的操作,也是一次请求一次有效,用完即销毁不能复用,在系统高负载的情况下对数据库等资源的消耗会很大,能承受的并发量有限。 Swoole的出现给PHP带来了一种新的运行方式,完全接管了PHP-FPM的功能,并且弥补了PHP在异步网络通信领域的空白。Swoole提供了PHP的全生命周期管理,此外Swoole的常驻进程模式,也能够高效的利用资源,比如可以建立数据库连接池、共享内存变量等。还有Swo...

  F5Pid34CNfer   2024年08月07日   66   0   0 PHP
关注 更多

空空如也 ~ ~

粉丝 更多

空空如也 ~ ~