用php怎么做系统,使用框架和原生php开发的性能和安全问题怎么考虑?
不管哪种编程语言,随着发展都衍生出了很多框架,框架的目的是为了提高开发效率而生的。很多人会纠结于PHP框架与原生代码之间,性能与安全性孰高孰低,其实这都取决于开发者自身。
为什么会存在框架?我们知道PHP原生代码只是提供基础的内置函数和类库支持,不同的人可以写出不同风格的代码。对于大型项目而言,一个人的能力是有限的,所以需要很多人协同开发,这样问题就来了,每个人的代码风格和逻辑思维是不同的,团队开发时会使项目变得难以维护。
基于这种考虑,就需要有一套规范,框架就是这样的一套规范,你使用这个框架就必须遵守望它所规定的约束,使用框架开发就使得项目易于维护(代码风格、命名规范、逻辑处理都是相对统一的)。
另外一方面,框架还提供了很多现成的机制(功能封装),简化了开发难度,很多工作不需要从零开始,使得项目开发速度很快。
框架与原生的比较1、框架性能上一般低于原生代码:
上面说到,框架提供了很多功能的封装,另外还有一些约束检查。框架为了通用性,做了很多额外的工作,所以一般来说,实现同样一个需求,基于框架开发的性能低于使用原生代码开发的。
2、框架的安全性一般高于原生代码:
框架在设计之初就会考虑安全问题,比如对用户提交的数据做了一些过滤处理等;而原生代码颗粒度都是非常小的,安全问题需要开发者自己去实现。
但这并不是说使用了框架就能100%保证业务安全性,无论是使用框架还是原生代码开发的项目,其安全系数完全取决于开发者在这方面的处理。
综合而言,无论项目大小,都建议基于框架开发,因为框架带来的额外性能开销是可以通过其它手段弥补的(比如:缓存、硬件配置)。
以上就是我的观点,对于这个问题大家是怎么看待的呢?欢迎在下方评论区交流 ~ 我是科技领域创作者,十年互联网从业经验,欢迎关注我了解更多科技知识!如何成为一名PHP架构师?
先明确这里所指的PHP工程师,是指主要以PHP进行Web系统的开发,没有使用其的语言工作过。工作经验大概在3~4年,普通的Web系统(百万级访问,千成级数据以内或业务逻辑不是特别复杂)开发起基本得心应手,没有什么问题。但他们会有这样的误点:
◆ 除了PHP不使用其它的语言,可能会点shell 脚本。
◆ 对PHP的掌握不精(很多PHP手册都没有看完,库除外)。
◆ 知识面比较窄(面对需求,除开使用PHP和MYSQL,不知道其它的解决办法)。
◆ PHP代码以过程为主,认为面向对象的实现太绕,看不懂。
这些PHPer在遇到需要高性能,处理高并发,大量数据的项目或业务逻辑比较复杂(系统需要解决多领域业务的问题)时,缺少思路。不能分析问题的本质,技术判断力比较差,对于问题较快能找出临时的解决办法,但常常在不断临时性的解决办法中,系统和自己一步步走向崩溃。那怎么提高自己呢?怎么可以挑战难度更高的系统?
更高的挑战在那里?
结合我自己的经验,我列出一些具体挑战,让大家先有个感性的认识。
高性能系统的挑战在那里?
◆ 如何选择Web服务器?要不要使用fast-cgi 模式;
◆ 要不要使用反向代理服务?选择全内存缓存还是硬盘缓存?
◆ 是否需要负载均衡?是基于应用层,还是网络层? 如何保证高可靠性?
◆ 你的PHP代码性能如何,使用优化工具后怎么样? 性能瓶颈在那里? 是否需要写成C的扩展?
◆ 用户访问有什么特点,是读多还是写多?是否需要读写分离?
◆ 数据如何存储?写入速度和读出速度如何? 数据增涨访问速读如何变化?
◆ 如何使用缓存? 怎么样考虑失效?数据的一致性怎么保证?
高复杂性系统的挑战在那里?
◆ 能否识别业务所对应的领域?是一个还是多个?
◆ 能否合理对业务进行抽象,在业务规则变化能以很小的代价实现?
◆ 数据的一致性、安全性可否保证?
◆ 是否撑握了面向对象的分析和设计的方法?
这里所列出的问题,你都能肯定的回答,说明在技术上你基本已经可能成为架构师了。如何你还不能回答,你需要在以下几个方向加强。
怎么样提高,突破瓶颈
如何你还不能回答,你需要在以下几个方向加强:
◆ 分析你所使用的技术其原理和背后运行的机制,这样可以提高你的技术判断力,提高你技术方案选择的正确性;
◆ 学习大学期间重要的知识,操作系统原理,数据结构和算法。知道你以前学习都是为了考试,但现在你需要为自己学习,让自己知其所以然;
◆ 重新开始学习C语言,虽然你在大学已经学过。这不仅是因为你可能需要写PHP扩展,而且还因为,在做C的应用中,有一个时刻关心性能、内存控制、变量生命周期、数据结构和算法的环境;
◆ 学习面向对象的分析与设计,它是解决复杂问题的有效的方法。学习抽象,它是解决复杂问题的唯一之道。
有什么好的开源php商城系统?
我可以告诉你没有。目前网上的商城程序都是普通的模式。内存缓存都没有 怎么避免高并发。如果你网站的商城真的能有那么高的并发 那么你肯定狠赚钱,没必要因为这点小钱,而用开源的程序,找个有实力的公司定做个 php 的也就10多万足够了
写一套公司内部工作流的erp管理系统?
使用Python好。为什么?且看我分享一个开源的项目,答主可以直接拿去参考或者在此基础上进行加工修改:https://github.com/zhuinfo/Django-ERP
这里要特别说一下该系统的「物料」管理。该系统中用于进销存的的商品,统一归类为「物料」,但这里的物料不单单包括商品,还包括设备、建筑物、房屋/会议室、员工宿舍、图书、工位、工卡/门禁卡等。甚至工单也算作物料,作者希望通过这种大物料的管理方式,企业可以全面的管理内部物料,管控的粒度可细化到任意层面,实现内部服务的闭环可控管理。
采购单
这里我感觉前端没有设计好,禁止表单编辑只是对表单字段设置disabled属性。实际上在django admin中只要设置has_change_permission方法返回False就可以了,不过可能django1.x版本还没有那么方便吧。
销售管理
销售订单
库存管理
实时库存可以查看当前实时库存情况。领料单是物料出库的依据,也是项目成本核算的基础。入库单则是采购单的后续操作,用于给物料进行入库。库存调整用以对仓库中物资的数量进行调整,增加或者减少数量。应该是在当日盘点或月底盘点的时候会用到。返库单用来归还领用的物料,相当于物料可以出借归还。期初库存导入用于在系统初始化的时候快速的导入原始库存物料以及库存量信息。
虽然该项目是基于Python2.7和django1.x写的,但是里面的设计思路非常好,也有工作流管理。我部署后给领导看了下,说这个应该是很有经验的人写的,如果研究透了,可以至少增长三年经验呢。
为什么企业的应用系统中用PHP较少?
首先需要肯定的是,PHP、Java、.NET在所有开发语言当中,都是相当优秀的。
纵使PHP号称是“世界上最好的语言,没有之一”,奈何.NET还有“银河系最牛叉的IDE”,各类开发语言没有绝对的好与不好,只有合适与不合适。
PHP相对于Java和.NET而言,PHP是脚本语言,而Java和C#则不是脚本语言。PHP的主要特点是:函数库丰富、运行速度较快、开发效率高,但是也有不少人评价PHP是“脏而快”的脚本语言,所以PHP更适合做“胶水语言”,更多的应用场景是一般性的中小型项目、或作为大型项目的前端语言。
而Java和.NET作为高级开发语言,其语言特性比PHP要高级一些,另外在其它一些解决方案上要优于PHP。至少目前国内所有的中大型系统,后端用PHP的是少数(不要说什么淘宝和百度是PHP开发的,那都是N年前的事情了),现在的主流是Java作为后端,PHP和NodeJS一般用作前端。
熟悉Java的同学都了解过,Java的生态圈在所有语言中是较优秀的,行业内基本上各种需求在Java这里都能找到完美的解决方案,而PHP在这块是缺乏的。
从安全性上说,PHP也是弱类型脚本语言,代码规范性和安全性上较Java和.NET差一点。最常见的就是PHP中的“==”、“===”进行变量比较时,可能会出现一些意想不到的情况。
综上,我们给PHP的定位还是做中小型项目,更适合做网站。而Java和.NET更偏向于大型项目。