php
文章平均质量分 72
CrazyCodes
Segmentfault PHP Tags Author
展开
-
PHP8.x 你必须知道的这些新特性
前言Hello 大家好,我是CrazyCodes,距离上次发文已经过去4个月的时间,今年是悲惨的一年,也是奋发的一年,我会发布一些更好更实用的文章与大家分享,谢谢大家一直以来的支持。本篇是我参加《2020 PHP开发者峰会》 Nikita分享内了解到的一些知识与大家分享Nikita 是PHP8的核心开发者。PHP8的版本会在今年11月26日与各位开发者见面,敬请期待JIT值得被提起的则是JIT新的特性,它会将PHP代码转换为传统的机器码,而并非通过zend虚拟机来运行,这样大大的增加了运行速原创 2021-01-11 17:57:12 · 610 阅读 · 0 评论 -
电商系统设计之运费模板(上)
电商大伙每天都在用,类似某猫,某狗等。 电商系统设计看似复杂又很简单,看似简单又很复杂 本章适合初中级工程师细看,大佬请随意前言在订单系统中,运费模板是其中一个重要组成部分,看似简单的一个设置,在其内的设计中,要考虑的问题还是很多滴,开始进入正题运费模板运费模板由模板名称是否包邮默认运费特定地区运费四部分组成,所谓模板则就是设置这样一个框架,由多个商品多对一调用一个模板,通过模板设置的规则来计算配送费用,看似简单的功能,由我来拆解开跟各位聊聊。运费规则无论是默认...原创 2021-01-06 09:21:00 · 2201 阅读 · 0 评论 -
XDEBUG 从入门到精通
前言Xdebug是PHP的扩展,用于协助调试和开发。它包含一个用于IDE的调试器它升级了PHP的var_dump()函数它为通知,警告,错误和异常添加了堆栈跟踪它具有记录每个函数调用和磁盘变量赋值的功能它包含一个分析器它提供了与PHPUnit一起使用的代码覆盖功能。猿生必备的工具。但不推荐在生产环境中使用xdebug,因为他太重了。安装PECL 安装pecl install xdebugzend_extension="/usr/local/php/modules/xdebug.原创 2020-10-25 12:36:21 · 2794 阅读 · 0 评论 -
浅谈架构是为了什么 (下)
前言上一章对架构进行了通俗的解释,本章以图文并茂的形式对架构的演变做详细的阐述架构并非因高并发、大数据而生,以下的架构方式是根据业务演变而变更。从现在开始,假设我们自己是一个创业的小团队。没资金没人脉,靠技术打天下。现在要开发一套电商系统。开始自己的表演。1.0没钱没人,只能买得起一台阿里云学生机。这时我们只能选择使用下面的架构单机部署整个LNMP环境是唯一选择,这时我们还可以对1.0版本做一些优化的地方,在主从数据库这里,要注意了。单机跑主从简直是多此一举。单机流量本身就有效。主与从的.原创 2020-10-25 12:35:28 · 849 阅读 · 2 评论 -
浅谈架构是为了什么 (上)
前言架构是一款软件从0到100的演变过程。并非是上来就可以承载什么亿级访问的牛x架构什么的。本篇写给那些想要成为架构师或者正在尝试成为架构师的朋友。陕西的城墙有架构,阻挡外来攻击兵马俑黄陵有架构,避免根基倒塌这是硬性架构,在初期就应考虑清楚其稳定性。餐厅的人员配置,菜谱的交替更换以及管理的不断完善。这是软性架构,考虑扩展性。why为什么要做架构?有一部分人是这样说的做软件就需要架构没架构的软件不靠谱我是架构师这软件我必须做架构我在学习架构,所以我接手的项目要做架构各位.原创 2020-10-25 12:35:02 · 287 阅读 · 1 评论 -
程序员自省录
前言本文具有批判性,如有误解请移步右上角叉叉。为什么做程序员?我相信每位入行的童鞋 (除了高工资,有免费大桶水喝的办公室,不干体力活的各种原因外),都有想用代码改变世界的想法。我也是这样,在苦苦挣扎了五年后,我发现我并未成功改变世界,而是让代码改变了自己。为什么要做程序员?是对程序的热爱,对代码的忠诚,如果看到这里,你并非如此,请右上角叉叉离开。因为你不适合看这篇文章。Sorry。怎么做好程序员?好与不好,每个人的界定都不一致,我自认为好的程序员是追求完美的但从不口出狂言。作为一名程序员,应.原创 2020-10-25 12:34:24 · 357 阅读 · 2 评论 -
Laravel-Action 对代码的改造
前言以往写过俩篇文章[积德篇] 如何少写PHP "烂"代码https://blog.fastrun.cn/2018/08/15/1-51/举枪消灭"烂代码"的实战案例https://blog.fastrun.cn/2018/08/15/1-51/感觉文章中对Action的操作没有一个规范性的调用及编写。特此写了一个laravel-action包https://github.com/CrazyCodes/Laravel-Action希望可以帮到你。安装下载composer包: compo.原创 2020-10-25 12:33:39 · 242 阅读 · 0 评论 -
举枪消灭“烂代码“的实战案例
前言之前我写过一篇如何少写PHP "烂"代码 https://blog.fastrun.cn/2018/06/13/1-9/感觉很多新人对此不太理解。今天以打卡功能为例,去讲解其中的奥秘。那篇文章讲过代码开发的过程中分几种类型。增删改的需求Route -> Controller -> Service -> Action查的需求Route -> Controller -> Service -> Repository经过多次实际开发验证后,发现Reposi.原创 2020-10-25 12:33:03 · 132 阅读 · 0 评论 -
取代PHP原生函数的一些扩展包
前言虽然程序员无时无刻都在造轮子,但造轮子也有效率之分,用好轮子才能造出好“????”guzzlehttp/guzzlecomposer require guzzlehttp/guzzle你可以用guzzlehttp完全取代curl,file_get_content,fopen等函数。这个扩展包使用起来极为顺手。我们在代码量上看下对比。php_curl<?php //初始化 $curl = curl_init(); //设置抓取的url curl_set原创 2020-10-25 12:32:17 · 233 阅读 · 0 评论 -
不一样的PHP基础知识汇总
前言整理了一些关于PHP相关的基础。请大家随意摘看。通信协议网络通信协议是一种网络通用语言,为连接不同操作系统和不同硬件体系结构的互联网络引提供通信支持,是一种网络通用语言。应用层名称注释HTTPHypertext Transfer Protocol 超文本传输协议,显示网页DNSDomain Name System 域名系统FTPFile Transfer Protocol 文件传输协议SFTPSSH File Transfer Protoco.原创 2020-10-25 12:31:17 · 175 阅读 · 0 评论 -
运行调试你的PHP代码
前言没有任何一名程序员可以一气呵成、完美无缺的在不用调试的情况下完成一个功能或模块。调试实际分很多种情况。本篇文章我分享下自己在实际开发工作中的经验,我个人理解,调试分三种,注意我所讲的是调试并非测试功能调试组件调试片段调试功能调试是指在完成一个功能或者正在完成功能的过程中进行的错误、逻辑、结果的测试组件调试是指将一个正在开发测试的插件、类进行错误、逻辑和结果的测试片段调试是指将一段代码片段、函数、变量的预期和结果的测试接下来我们看下本章列出的一些调试方法暴力调试这种方式简单粗暴,.原创 2020-10-25 12:29:26 · 1134 阅读 · 0 评论 -
电商系统设计之商品[番外篇]
前言这是电商系统设计系列在商品设计这块的最后一篇文章。以下是其他文章地址,按照逻辑顺序排列如下电商系统设计之用户系统 https://blog.fastrun.cn/2018/06/14/1-10/电商系统设计之购物车 https://blog.fastrun.cn/2018/06/19/1-12/电商系统设计之商品 (上) https://blog.fastrun.cn/2018/07/08/1-26/电商系统设计之商品 (中) https://blog.fastrun.cn/2018/07.原创 2020-10-24 13:37:45 · 242 阅读 · 0 评论 -
电商系统设计之商品接口
前言我应该是少数在文章中直接展示接口文档的人。本篇我思考了很久到底要不要解析下商品接口开发的注意点。客户端开发与服务端开发即是天敌也是兄弟。希望本篇文章让你们减少争执,把“爱”给对方。接口设计简述电商系统设计之中,比较复杂的接口就论商品详情的接口了,响应参数特别多,特别杂。在开发获取商品详情接口时要遵循以下几个原则返回的JSON嵌套数量要少方便去查询到指定的SKU其他接口相关规范查询SKU关于查询SKU,我让我的小伙伴是这样做的,首先拿出规格和属性"选择颜色": [ {.原创 2020-10-24 13:37:14 · 2061 阅读 · 1 评论 -
NGINX日志配置总结
前言本来准备讲解nginx和apache的日志的,但是个人不太推荐apache(纯属个人爱好),这里就不介绍apache的日志了。作为一名程序员,比码代码还重要那么一点点的东西就是日志的分析和查询。下面列出常见日志及设置方法。配置文件nginx分access_log和error_log两种日志设置需要在nginx.conf中,默认通过源码包编译安装nginx目录应在/usr/local/nginx目录下,如果你通过yum或者其他方式安装,不清楚或不知道nginx具体安装目录,可以使用.原创 2020-10-24 13:36:04 · 303 阅读 · 0 评论 -
电商系统设计之订单
前言用户交易将经历一段艰辛的历程,一般用户感觉不到,实际程序是经历了一段生死离别。具体付款流程如下不(wo)是(gu)这(yi)张(chuan)图(de),请看正经流程图之前的几篇文章介绍了购物车如何设计用户系统如何设计商品系统如何设计其实他们都在为交易系统做铺垫,一个产品如果没有收入,那这只能是寺庙的公益产品。任何产品最终都要走向这步 (收钱)。付款用户付款过程中有很多场景也会出现意外,以下是我碰到的“天灾人祸”成功用户发起微信支付并成功支付用户发起支付宝支付并成功支付.原创 2020-10-24 13:35:37 · 837 阅读 · 1 评论 -
一道看似简单的面试题
前言使用PHP,给定一个数,判断这个数是否是二的N次方这样看似简单的一个面试题, 实际牵出了很多基础知识,本章在为大家补习基础知识的情况下来解答这道题。先亮出答案function exponentiation($number){ if ($number < 0) { return false; } if (($number & ($number - 1)) == 0) { return true; } else { return false; }}.原创 2020-10-24 13:32:56 · 249 阅读 · 0 评论 -
PHP程序员必须知道的两种日志
前言作为一名程序员,比码代码还重要那么一点点的东西就是日志的分析和查询。下面列出常见日志及设置方法。php-fpm 慢日志php慢日志需要在php-fpm.conf设置,如果使用源码包安装默认请执行下面命令cp php-fpm.conf.default php-fpm.conf默认通过源码包编译安装php目录应在/usr/local/php目录下,如果你通过yum或者其他方式安装,不清楚或不知道php具体安装目录,可以使用find / -name php-fpm.conforph.原创 2020-10-24 13:32:27 · 482 阅读 · 1 评论 -
电商系统设计之商品 (下)
电商大伙每天都在用,类似某猫,某狗等。电商系统设计看似复杂又很简单,看似简单又很复杂本章适合初级工程师及中级工程师细看,大佬请随意前言商品系统与订单系统(交易系统)是相铺相成的,当买家购买商品后将经历一个过程商品系统->交易系统->订单系统->物流系统->售后系统完成上述流程则是完成了一笔交易,经常网上购物的童鞋都懂这个。今天我们讲下从商品系统到交易系统和订单系统的存储过程及其设计上的应该注意的“坑”。存储前俩篇文章讲解的商品系统的SKU与SPU的设计过程..原创 2020-10-24 13:31:55 · 300 阅读 · 0 评论 -
电商系统设计之商品 (中)
电商大伙每天都在用,类似某猫,某狗等。电商系统设计看似复杂又很简单,看似简单又很复杂本章适合初级工程师及中级工程师细看,大佬请随意前言上一篇文章我们讲了关于电商SPU,SKU的概念,以及为何要设计自定义属性与自定义规格并解释了何时可以用到它们。我一直在说电商是一个既简单又复杂的东西,本章我们再一次深度解析电商系统商品设计的更多逻辑与实现。关联SPU对应多个SKU,SPU实际就是主商品表,类似于iphonex这款手机,而SKU则是这个商品绑定的规格表,类似与iphonex 红色款,iphon..原创 2020-10-24 13:29:49 · 513 阅读 · 0 评论 -
电商系统设计之商品 (上)
电商大伙每天都在用,类似某猫,某狗等。电商系统设计看似复杂又很简单,看似简单又很复杂本章适合初级工程师及中级工程师细看,大佬请随意前言商品的设计是电商系统中占据重要地位,如何设计出高扩展,高性能的商品系统并非一件简单的事情,我的设计是观摩互联网各大佬的设计后自行研究的,并非完全正确,但也不完全错误,现在我设计的这套电商系统已经在使用,如果在逻辑上遇到什么问题,会及时修改我关于电商系统相关文章的设计思想部分。元素见上图,本次我们先讲解下系统规格与自定义规格、系统属性与自定义属性的关于及其他..原创 2020-10-23 00:24:02 · 374 阅读 · 0 评论 -
冷门PHP函数汇总
概述整理一些日常生活中基本用不到的PHP函数,也可以说在框架内基本都内置了,无需我们去自行使用的函数。量不多。后续在日常开发中如遇到更多的冷门,会更新本文章sys_getloadavg获取系统的负载<?php$load = sys_getloadavg();if ($load[0] > 80) { header('HTTP/1.1 503 Too busy, try again later'); die('Server too busy. Please try a原创 2020-10-23 00:23:25 · 206 阅读 · 0 评论 -
RabbitMQ 初体验
概述RabbitMQ是一款消息队列中间件。他提供了几乎覆盖所有语言的SDK与文档,简直强大的不的了。要详细的去了解学习RabbitMQ,我建议还是看官方文档吧。http://www.rabbitmq.com/getstarted.html消息队列有以下几个基本用途异步处理应用解耦流量削峰系统架构消息队列的这几个用途我会在后续的文章以真实案例去表述生产者创建RabbitMQ链接$connection = new AMQPStreamConnection('localhost'.原创 2020-10-23 00:22:52 · 160 阅读 · 1 评论 -
五分钟入门 Dingo API
基于 https://laravel-china.org/docs/dingo-api/2.0.0 文档更简洁的描述Dingo,直戳重点,注重实践概述Dingo API帮助您轻松快速地构建自己的API。虽然这个方案的目标是尽可能保持灵活性,但它仍然不能涵盖所有情况并解决所有问题。安装将以下代码加入到composer.json中,并执行composer update 或 composer install"require": { "dingo/api": "2.0.0-alpha1"}..原创 2020-10-23 00:22:17 · 594 阅读 · 0 评论 -
老项目重构手记之用户系统
受邀来一起重构公司的老项目概述重构首先要注意几个点重构后功能的可扩展性业务互相依赖的复杂度脱离本身的业务进行重构重构后的代码可读性与可维护性性能的提升以上几点是重构注意的地方也是重构的目的分析本次重构的项目运营了三年之久,用户及业务量也上不来。至于重构的真正原因不清楚。用户注册量:107470日PV:1000+非常的惨淡关于用户ID与其他业务绑定仅仅是单纯的存储用户ID进行绑定,类似与评论,购买等。这样在重新设计用户表的时候无需考虑其他表的业务是否有冲突或者依赖。.原创 2020-10-23 00:21:11 · 254 阅读 · 1 评论 -
PHP程序员必看书籍
以下都是我看过都书籍,无论是新手或中级别的工程师,我可以保证内容质量,大佬可跳过概述知识无价,还是建议各位童鞋把更多的资金投入到学习中。书名排名不分前后《PHP7内核剖析》深入理解PHP最佳良品https://item.jd.com/20376348917.html《鸟哥的Linux私房菜》PHP码农最爱的LINUX入门书籍https://item.jd.com/1551951406.html《Modern PHP (中文版)》学习(新)PHP的好书https://item..原创 2020-10-23 00:20:41 · 604 阅读 · 2 评论 -
初中级PHP面试基础汇总
这是我整理的一套面试题,老铁们看看就当复习了哦概述感觉现在发面试题有些冷门,就跟昨天德国那场似的,不过看看当提前复习了。提前备战。这2个月出门面试的童鞋可注意不要中暑哦。说几个你所知道的设计模式单例模式保证一个类仅有一个实例,并提供一个访问他的全局访问点例如框架中的数据库连接 - 类似DB类策略模式针对一组算法,将每一个算法封装到具有共同接口的独立的类中,例如进入个人主页时,根据浏览者的不同,给予不同的显示与操作 - 类似不同用户呈现不同效果注册模式提供了在程序中有条理的存放并管..原创 2020-10-23 00:20:11 · 193 阅读 · 0 评论 -
电商系统设计之购物车
本章适合初级工程师及中级工程师细看,大佬请随意前言问 [不存价格字段不行吗?直接查询商品表获取价格]答 [如果价格更新,应提示用户,商品的浮动信息。可以选择直接更新购物车,或者单独建立一个表,来记录更新的价格和信息,类似京东]问 [联表查询可以从商品表中知道商品是否上架]答 [商品不存在了如何联,只会将逻辑整复杂,未来包括降价提醒,无货提醒,下架提醒,购物车该如何查询就成了一个问题]上一篇文章在对于购物车业务及数据表设计中,有位童鞋在评论区与我讨论许久,特此独立一篇文章来详解下我的想..原创 2020-10-23 00:17:56 · 676 阅读 · 0 评论 -
[还魂篇] 初来乍到如何致人于死地
逗乐篇,本章的代码无论大牛还是菜????都写过统计一些狗血的代码前言初来乍到如何致人于死地,这个标题起的有点血腥恐怖了,代码写不好,吃饭吃不好。本章我们一起来回忆下那些年的“烂代码”,整理不全请见谅,以下都是我写过的????箭头望京soho,前方左拐、右拐然后右拐if(){ if(){ if(){ if(){ if(){ } } } }}面条来碗拉面if(){ $data = []; if(){ foreach ($vari原创 2020-10-23 00:16:06 · 475 阅读 · 1 评论 -
电商系统设计之用户系统
电商大伙每天都在用,类似某猫,某狗等。电商系统设计看似复杂又很简单,看似简单又很复杂本章适合初级工程师及中级工程师细看,大佬请随意前言设计以以下为工具讲起PHP为开发语言基于Laravel框架MySQL为数据存储电商的可变性与孩子的心情一样,变化极快,所以在设计之处就要想好大部分的功能接入及开发,尽量减少重构次数。对老板来说节约成本,对程序员来说“珍惜生命”数据表前期业务简单时,我们可以将数据表设计为下列的样子TableNameCommentsmember..原创 2020-10-22 17:29:23 · 581 阅读 · 0 评论 -
[积德篇] 如何少写PHP “烂“代码
写给初生牛犊不怕虎的童鞋们,大佬可随意摘看本章基于PHP Laravel前言经常会有人问目录如何设计比较好?代码如何分布好?怎么写一个可维护的项目?“烂”项目我也没少写,以下是参考互联网各大佬的文章总结及个人开发经验而来.ControllerController顾名思义是控制器,在入门PHP的时候,就知道Controller代表MVC中的C层,MVC本身的概念就代码分离,教你如何如何将业务分开,但面临着业务的不断发展,代码的复杂度也随之提高,功能与功能之间的链接错综复杂,最后你..原创 2020-10-22 17:27:41 · 619 阅读 · 0 评论 -
PHP GD库解析一张简单图片并输出
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4JffojjB-1603358737755)(https://blog.fastrun.cn/wp-content/uploads/2018/06/73678c8cd3692cf204938a47fc1af0e7.png)]这里只演示一下2种颜色值的图片,简单描述下概念。首先要安装下GD库。否则下面的代码运行不了。$size = getimagesize('2.png'); // 获取图片大小 $res = im原创 2020-10-22 17:26:17 · 413 阅读 · 0 评论 -
老项目的迁移手记
收到一个朋友的求救,他现在遇到一个难题。就是刚刚入职的公司,项目没有GIT,用的老版本的TP,CI,代码也很凌乱,目录也是非常的多,有的没的都在服务器上放着,服务器上还有将近30G的用户头像存着,总之就是一个字 “乱”我准备对这个乱到无法整理的公司项目、服务器及架构进行重新整理,接下来,请看我的表演~备份既然没有git,那就不用git了,直接在线上打包,ftp链接上下载,在毫无头绪的情况下,我建议直接重装。。如果你没有十足把握,建议不要送死。公司业务总结构新接口应用程序后台应用程序老接口应原创 2020-10-22 17:25:29 · 154 阅读 · 0 评论 -
PHP程序员如何简单的开展服务治理架构(三)
服务治理所治理的服务需要合理的部署与管理,本章我们讲一下SOA(面向服务架构),本人语言文笔不好,所以本章内容使用问答模式,参考了 [SOA面试题(http://www.jdon.com/soa/soa-interview.html)] 的面试题,通过对此站复杂的描述进行简单的讲解。概述SOA代表了面向服务架构,仅仅是一种概念,通过这种概念而演变出的各种各样的服务架构都可称为SOA架构,SOA核心的概念就是 “松耦合”。非SOA的架构多语言开发同语言开发服务与服务之间可能会是不同的开发语言或原创 2020-10-22 17:24:49 · 121 阅读 · 0 评论 -
PHP程序员如何简单的开展服务治理架构(二)
服务治理 治理的绝笔是服务,在一家公司有玩各种语言的程序员,如何去统一管理他们开发的服务,这是一个问题。上一章主要讲了下服务治理需要什么,如何实现,这章我们详细的“肢解”一下服务治理的一个非常重要的组员 Thrift上一章说明他的时候是这样写的暂时大可理解为可以通过它去调用其他开发语言的方法本猿人已经写好的服务治理 https://github.com/CrazyCodes/Service-Govern名词解释thrift其实是一个软件框架,用来进行可扩展且跨语言的服务的开发。它结合了功原创 2020-10-22 17:24:19 · 118 阅读 · 0 评论 -
PHP程序员如何简单的开展服务治理架构(一)
不涉及其他的语言及工具,我们从PHP本身来谈如何实现服务治理本猿人已经写好的服务治理 https://github.com/CrazyCodes/Service-Govern.git治理什么?这个专业名词很容易发现治理的是服务,而服务则是我们的项目。管理这些服务方案则叫服务治理。现在在Server上有四项服务,分别为UserServiceShopServiceGoodsServiceLiveService这些服务我们叫它服务提供者(既提供对内服务的应用)调用服务的应用我们称它为服原创 2020-10-22 17:23:08 · 137 阅读 · 0 评论 -
安装Nginx要从娃娃抓起
本文翻译与2017年8月26日使用configure命令配置构建。它定义了系统的各个方面,包括允许使用nginx进行连接处理的方法。最后它创建一个Makefile。该configure命令支持以下参数:–prefix=path 定义一个nginx存储的系统目录,这个目录将存储nginx的代码和配置文件。如果不设置将默认安装到 /usr/local/nginx 目录中。–sbin-path=path 设置一个nginx可执行文件的路径。默认情况下路径为 prefix/sbin/nginx原创 2020-10-22 17:22:39 · 95 阅读 · 0 评论 -
Laravel5.4队列简单配置与使用
概述什么是队列?百度百科是这样说的“队列”是在传输过程中保存数据的容器。举几个生活中例子:iphone手机新款发布,三里屯iphone进的新货。大家要排队买,不能说一大堆人一起冲进去,那么这店就完了。你有一大堆女朋友。你不得一个一个来,一起来你也受不了 ?C语言中堆的概念也是这样,先进先出,不能起个大早赶个晚集。回到正题:消息队列则是为大批量处理数据而准备的一个概念,他有很多实现方式,并不是单一的代码结构。这里有比较专业的一篇文章:http://www.cnblogs.com/原创 2020-10-22 17:22:07 · 249 阅读 · 0 评论 -
PHP使用Oracle数据库的准备工作
系统 : Linux Centos 7.0前言:想让PHP可以操作Oracle数据库,那绝对是需要安装关于Oracle扩展。php的Oracle扩展叫ocioracle扩展包下载地址:http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html网页上会显示如下的下载列表:Download Oracle Database 10g Instant Client for Microsoft W.原创 2020-10-22 17:21:20 · 81 阅读 · 0 评论