PHP企业应用开发最佳实践.pptx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
标题1 PHP企业应用开发最佳实践 背景 主要方向是企业管理软件。 以私有部署为主要方式。 终端环境千变万化:操作系统,WebServer,PHP版本。 遇到了大量的问题,归纳为十个问题,供大家参考。 核心是尽量做到最小依赖,最简安装,最简维护。 目录 如何选择PHP的开发框架? 如何保护自己的代码? 如何解决PHP环境部署的问题? 如何解决用户二次开发无法升级的问题? 如何实现全文检索的问题? 如何实现计划任务的问题? 怎么导入导出word, excel? 如何实现轻量级的聊天服务器? 如何实现常见的消息通知? 如何应对常见的安全问题? 问题一:如何选择开发框架 PHP框架多如牛毛,选择困难。 09年的时候,研究过cakephp, ci等框架。 最后还是自己来写:zentaoPHP。 第三方框架的问题:通用框架,方向难以控制。 主要特点:结构简单,开发友好,深度扩展。 不管是自主开发还是第三方,一定要能掌控代码。 比如很多框架新版本无法兼容老版本的应用:(。 程序员一定要控制代码,而不是被代码控制。 问题二:如何保护自己的代码 商务手段: 保护代码的最好方式是开源。 通过开源开放建立竞争壁垒。 技术手段: 安全防护:内网的安全,限制访问。 加密软件:ioncube, zend。 前端保护:用PHP输出,代码混淆,签名,彩蛋(bmpcrypt)。 法律手段: 对内:保密协议,版权意识普及。 对外:商标,著作权登记,数字作品登记,外观发明专利,律师函,诉讼。 问题三:如何解决应用部署的问题 最开始不认为部署是问题,总觉得PHP程序员能搞定。(x) 先后尝试了各种集成运行环境,到后来自己精简,编译。 windows一键安装包 linux一键安装包(各种依赖lib全内置,尽量减少第三方依赖。) 各种deb包,rpm包。 docker镜像。 虚拟机镜像。 尽可能简化用户安装这一关。 问题四:如何解决二次开发和升级的矛盾 做二次开发的用户是最有价值的用户,但他们无法升级。 这个问题要从一开始就要考虑,也是我们自己开发框架的原因。 每个模块分为model, view, control, lang, config 充分利用PHP的解释执行的特点,加上OOP的机制。 主干代码和扩展代码分开。 框架判断扩展目录下面是否有扩展代码,有则优先加载。 无法使用OOP的,使用钩子机制,加上js, css实现动态的修改。 我们现在无分支:一套主干代码 + 若干插件。 问题五:如何实现全文检索的问题 无法使用第三方全文引擎软件:部署成本太高,有局限。 只能着眼于mysql的fulltext功能。 不做分词,做单字索引。 适用于小规模的全文检索,实际使用效果还不错。 基本步骤: 将内容拼装,转换为unicode值,存为一张索引表。 在转换过程中,将汉字和unicode的对应关系记录下来。 搜索时候同样做unicode的转换,然后对索引表进行检索。 将结果中的unicode还原为原来的内容,给用户呈现搜索结果。 对四个字符以下的英文单词填充特殊字符,这样也能搜索。 问题六:如何实现计划任务 操作系统自带的crontab, 计划任务用户部署起来有成本。 使用PHP的ignore_user_abort机制。 通过用户的访问来触发,启动一个计划任务的进程,常驻。 然后仿照crontab的语法,实现了PHP版本的crontab。 用户可以在后台自主添加计划任务。 常驻内存的调度程序定期扫描计划任务表,决定是否执行。 问题:webserver重启后,需要用户手工触发。 问题七:和其他数据格式的交换 word, exce格式的导入导出是常见需求。 可以借助开源的类库:phpexcel, phpword。 还有一种思路:将docx, xslx当作模板。 和其他应用的集成,采用接口的方式: /my-bugs.html /my-bugs.json 无需额外开发大量接口,尽量做到代码重用。 问题八:如何实现轻量级的IM服务 定位是轻量级的IM服务。 服务器端使用PHP + socket,跨平台部署,最小依赖。 客户端使用nw.js,html5的方案。 协议没有使用websocket,在socket基础上自己封装。 业务逻辑按照正常的B/S架构开发,mvc结构。 文字消息使用socket传输,附件使用http协议。 服务器端启动一个PHP脚本即可。 问题九:如何使用消息通知 邮件通知还是最常用的方式。 问题一:终端用户对smtp服务不了解。 问题二:各大邮件服务商对smtp服务限制越来越严格。 应对方案: 在配置的时候简化用户的配置。 换个角度来看:和sendcloud同学建议,促成了notice服务。 在尝试由我们来提供通知服务,摸索中。 体会:技术无法解决的问题尝试用商务来解决

文档评论(0)

智慧IT + 关注
实名认证
内容提供者

微软售前技术专家持证人

生命在于奋斗,技术在于分享!

领域认证该用户于2023年09月10日上传了微软售前技术专家

1亿VIP精品文档

相关文档