位置: 编程技术 - 正文

ThinkPHP的SAE开发相关注意事项详解(thinkphp6.0完全开发手册)

编辑:rootadmin

推荐整理分享ThinkPHP的SAE开发相关注意事项详解(thinkphp6.0完全开发手册),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:thinkphp3.2.3完全开发手册,thinkphp完全开发手册,thinkphp5.0完全开发手册,thinkphp 开发,thinkphp开发工具,thinkphp3.2.3完全开发手册,thinkphp3.2.3完全开发手册,thinkphp 开发,内容如对您有帮助,希望把文章链接给更多的朋友!

本文详细讲述了ThinkPHP的SAE开发相关注意事项。分享给大家供大家参考,具体如下:

ThinkPHP的SAE开发和标准版本的ThinkPHP基本一样,你无需了解SAE的接口用法,ThinkPHP的SAE引擎已经自动为你整合了SAE的接口,只要掌握ThinkPHP开发,你就能轻松掌握基于ThinkPHP的SAE开发。

下面是我们给出的一些利用SAE引擎开发过程的一些注意事项,能够帮助你更好的完成SAE的开发和部署。

配置

SAE引擎运行时拥有SAE自己的惯例配置和专有配置,因此配置文件加载顺序为:

惯例配置->项目配置->SAE惯例配置->SAE专有配置

SAE惯例配置和SAE专有配置中的配置项将会覆盖项目配置。SAE惯例配置:位于 引擎目录/Sae/Conf/convention_sae.php,其中定义了程序在SAE上运行时固定的数据库连接配置项。SAE专有配置:位于项目的Conf目录下,文件名为config_sae.php,大家可以将针对SAE的配置写到其中。

注:SAE惯例配置和SAE专有配置是针对SAE环境的独有配置,在本地运行时将不会加载。

数据库

开发者不需要在项目配置文件(config.php)中定义和SAE相关的数据库配置项,只需要定义本地调试时连接的数据库即可。代码提交到SAE时无需修改任何配置项也能运行,因为SAE惯例配置会自动覆盖你的项目配置文件中的数据库配置。

代码在SAE上运行时会进行分布式数据库连接,并读写分离。

缓存

在SAE开发过程中,你仍然可以使用ThinkPHP内置的缓存方法进行处理。下面是SAE引擎使用不同的缓存方法在本地和SAE平台下的区别(注意这个区别SAE引擎会自动判断处理):

缓存方法 本地运行 SAE平台 S缓存 默认使用File方式实现 固定使用Memcache实现,所以在SAE下 DATA_CACHE_TYPE配置项将失效。你如果需要使用SAE提供的Mecache服务,直接使用S函数就可以 F缓存 使用File实现 使用KVDB实现 静态缓存 生成静态Html文件 静态文件存入KVDB中 SQL队列 支持File、Xcache和APC方式 使用KVDB存储

新版的ThinkPHP支持SQL缓存队列功能,我们可以配置DB_SQL_BUILD_CACHE 开启SQL语句解析缓存。在SAE平台下固定使用KVDB存储SQL缓存,因此DB_SQL_BUILD_QUEUE配置项将不起作用。并且在SAE下运行时会用Counter服务记录SQL缓存列队出队次数,在Counter的管理后台

的数值很大,说明你设置的队列个数太小,需要调整DB_SQL_BUILD_LENGTH 配置项。

文件上传

文件上传仍然使用UploadFile扩展类库上传文件,使用方法不变。同样的代码在本地运行时将会上传到指定的目录,在SAE上运行时就会自动使用Storage服务,将文件上传到指定的Storage中。首先你需要在SAE平台上创建一个Storage的domain用于存放上传的文件:

"/Public/upload/1.jpg" , /Public 是一个模板替换变量, 他会被替换为Public文件夹所在目录的地址, 我们可以通过浏览器的查看源代码功能查看被替换后是什么效果。 可以看见, 替换后为 "/Public/upload/1.jpg" 。 但是在SAE上图片并没有在Public/upload目录下,而是在storage中。 我们需要将 /Public/替换为storage的域名,在SAE上才能正常显示。

我们在SAE专有配置Conf/config_sae.php文件中 定义如下代码:

这样,在SAE上会把 /Public/upload 替换为storage的地址, 在SAE上图片也能正常显示。

文件删除问题:

因为上传的文件在本地和SAE存放的地方不一样,所以我们不能直接用unlink删除文件。SAE版ThinkPHP新增sae_unlink函数实现兼容。如:

在本地运行时,会删除Public/Uploads文件夹下的图片。而在SAE上运行时,会删除domain为Public的Storage中的图片。此函数会删除哪个domian的文件也是由路径的第一个目录名称决定的。

图片处理

SAE引擎在图片处理方面也做了自动处理,在本地和SAE平台的区别如下:

图片功能 本地运行 SAE平台 缩略图 调用Image类库处理 自动使用SaeImage服务 验证码 调用Image类库处理 自动使用SaeVcode服务

你完全不用去学习怎么用SaeImage生成缩略图,也不用学习SaeVcode服务怎么用,你还是按照以前的方式使用ThinkPHP进行验证码和缩略图功能就可以了。

使用验证码的时候需要注意,在本地运行时验证码默认为数字形式,而在SAE上运行时验证码为数字+字母形式,而且存在字母大小写问题。如果你希望验证码区分大小写的话,需要将验证码统一转化为大写后进行匹配。

如:

日志记录

ThinkPHP的SAE开发相关注意事项详解(thinkphp6.0完全开发手册)

SAE版ThinkPHP同样实现了生成系统日志功能,在本地运行会将日志记录到项目的项目的Runtime/Logs文件夹下,而在SAE上运行会将日志记录到SAE平台的日志中心:

开启页面Trace信息。开启后,代码在SAE环境下运行时会显示一些SAE独有的Trace信息,有助于我们开发。你可能会到以下trace信息。

模板缓存:Trace信息名称为“[SAE]模板缓存”

在SAE下不会将模板编译缓存生成在Runtime目录下,而是存放在Memcache中。如果你想查看模板编译后的缓存,这里显示的就是模板缓存在Memcache中的缓存名称。你可以在SAE的memcache服务管理平台输入缓存名称得到缓存内容:

输入这里记录的缓存名称获得。

注:

在开启调试时不会生成核心编译缓存,如果你获得核心编译缓存,请先关闭调试。

缓存内容开头的数字是记录的缓存生成时间,请将数字去掉后再作为入口文件。

静态缓存:Trace信息名称为“[SAE]静态缓存”

它记录了生成的静态缓存在KVDB中的名称。 目前SAE管理平台没有能直接输入KVDB名称获得内容的地方,大家需要自己写程序获取内容。

注:此Trace信息是在生成静态缓存的时候才会出现。如果你访问到的页面没有执行生成静态缓存的操作时,将不会有此条Trace信息。

隐藏index.php

SAE不支持.htaccess文件,但我们可以使用SAE提供的AppConfig服务实现伪静态。

在你项目的根目录建立config.yaml文件,代码为:

这样就可以隐藏入口了。

比如这样的地址 自己写代码时,也要尽量做到横跨性,这样就可以让同样的代码既能在SAE下运行,也能在普通环境下运行, 使你在本地调试完后上传到SAE也不用修改任何代码就能运行。

下面是一些保持代码横跨性的建议:

(1)尽量少使用原生的SAE服务

能使用ThinkPHP自带函数替代的,尽量使用ThinkPHP自带函数。比如要使用SAE的KVDB服务,在ThinkPHP中完全可以用F函数代替。如果要使用SAE的Memcache服务,都使用S函数实现。 这样就不会导致你的代码从SAE转移到普通环境后性能很低。

个别SAE服务无法使用ThinkPHP自带函数代替的,才考虑使用原生的SAE服务。

(2)利用IS_SAE常量

ThinkPHP的SAE引擎增加了IS_SAE常量,能判断代码运行环境是普通环境还是SAE环境。如果你有段代码在普通环境和在SAE环境下实现方式不同,你可以使用IS_SAE进行判断后做不同处理或者加载不同的文件。

(3)利用SAE专有文件

在SAE惯例配置中,我们可以看见除了配置了固定的数据库配置项,还有一个SAE_SPECIALIZED_FILES配置项,它定义了系统专有文件。目前已经定义了UploadFile类和Image类的SAE专有文件,所以当我们的代码 import(“@.ORG.UploadFile”) 在本地运行时会按普通方式导入项目下Lib/ORG/UploadFile.class.php文件, 而在SAE上运行是系统检查到UploadFile.class.php有SAE专有文件,它导入的是SAE_SPECIALIZED_FILES配置项中定义的文件地址。这样实现了普通环境和SAE环境下同样的代码导入了不同类库,而类的调用方法都是一样的,只是现实方法不同,这样就能保证了代码的横跨性。

你也可以自己建立SAE专有文件,你可以将专有文件放在和普通文件同级目录,这样不用定义SAE_SPECIALIZED_FILE配置项,系统也能识别专有文件。比如我们在Image.class.php的文件的同级目录如果定义了一个名为Image_sae.class.php 的文件,则系统SAE上运行时,导入Image.class.php文件时会改为导入Image_sae.class.php文件。

如果一个类库既定义了同级目录下的专有文件,也在SAE_SPECIALIZED_FILE配置项中有定义,则会优先导入同级目录下的专有文件。建议大家如果需要建立专有文件时,在普通文件同级目录下建立。

如果导入的类库没有SAE专有文件,在SAE下运行时也会导入普通文件。

我们可以利用SAE专有文件,针对普通环境和SAE环境封装不同的类库,但类库的使用方法都是相同的,从而让类库的客户端代码具有横跨性。

(4)利用SAE专有配置

当遇到SAE和普通环境配置需要不一样时,你可以把普通环境的配置写到项目配置文件Conf/config.php中,而 将SAE需要用的配置写到SAE专有配置Conf/config_sae.php中。

更多关于thinkPHP相关内容感兴趣的读者可查看本站专题:《ThinkPHP入门教程》、《thinkPHP模板操作技巧总结》、《ThinkPHP常用方法总结》、《smarty模板入门基础教程》及《PHP模板技术总结》。

希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。

Laravel 5.1 on SAE环境开发教程【附项目demo源码】 本文实例讲述了Laravel5.1onSAE环境开发方法。分享给大家供大家参考,具体如下:Laravel-简洁、优雅的PHP开发框架,为WEB艺术家创造的PHP框架,如今正式移植

Laravel中间件实现原理详解 本文实例讲述了Laravel的中间件实现原理。分享给大家供大家参考,具体如下:#1什么是中间件?对于一个Web应用来说,在一个请求真正处理前,我们可

PhpStorm terminal无法输入命令的解决方法 在使用PhpStorm时,点击下面的terminal时,发现怎么输入都不显示,于是一查才发现是phpstorm与win系统不兼容的问题,只要设置一下控制台(使用老版本就ok

标签: thinkphp6.0完全开发手册

本文链接地址:https://www.jiuchutong.com/biancheng/301926.html 转载请保留说明!

上一篇:Laravel的throttle中间件失效问题解决方法(laravel event)

下一篇:Laravel 5.1 on SAE环境开发教程【附项目demo源码】

  • 销售无形资产增值税纳税义务发生时间
  • 金税四期主要监管什么
  • 发票验旧是验旧已开发票还是未开发票
  • 工会费个税税前扣除标准
  • 家属机票怎么办理
  • 保险企业汇算清缴规定
  • 分期收款开具发票可以吗
  • 工资核算方式
  • 营改增结束了吗
  • 合伙企业转让股权需要其他股东同意吗
  • 消防设施安装费包括哪些
  • 小微企业银行贷款印花税
  • 银行手续费发票怎么开
  • 税务一般纳税人
  • 一般纳税人为什么要开专票
  • 园林设计属于什么
  • 增值税专用发票怎么开
  • 免税收入的财税处理
  • 税收优先权的表述
  • 微众银行账户验证账户0019向您尾号677账户
  • 怎么防止接受虚开增值税发票?
  • 外购货物评估减值要转出进项税额吗?
  • 设备安装合同预付款比例
  • 如何设置win7系统密码
  • 什么是电子发票图片
  • 报废资产未及时核销
  • 物流丢失了货品如何报警处理
  • 苹果客服人工24小时
  • sgmain.exe - sgmain是什么进程 有何作用
  • 付不出去的应付账款如何写说明书
  • 本单位生产的水泥属于
  • php目录列表
  • php 表单
  • vue中使用require报错
  • 深度学习:图像去雨网络实现Pytorch (二)一个简单实用的基准模型(PreNet)实现
  • ChatGPT 能自己跑代码了!
  • 发票纳税人识别号错了怎么解决
  • 综合所得内容有哪些
  • 帝国cms配置数据库
  • 库存现金借方发生额怎么计算
  • 什么叫境外所得
  • 资产捐赠账务处理
  • 开票一定要确认收入嘛
  • 小规模季度交税分录怎么做
  • 经营性收入包括成本吗
  • 工资薪金税务缴纳
  • sqlserver2008触发器语法
  • 收据大写后面的空格怎么填
  • 上市公司发放现金的规定
  • 跆拳道馆薪酬详细方案
  • 坏账核算备抵法的优缺点
  • 商业承兑汇票如何承兑?
  • 购建固定资产属于投资活动吗
  • 被代持股份的股东需要负责吗
  • 小规模发票冲红了退税怎么处理
  • 支付投资者投入的款项
  • 电子银行承兑汇票到期怎么兑现
  • 商品折扣计入哪个科目
  • 库存商品属于什么科目
  • 浅谈基于comsol的锂离子电池仿真
  • macbookzen
  • xp系统软件开机自启
  • 在linux系统中,用来存在系统所需
  • win7系统电脑开热点
  • bootstrap4和3
  • node.js http服务器
  • ie6怎么设置兼容性
  • web标准网页布局的背景
  • ssh远程登录脚本
  • 在linux的主要组成部分中最基础的是哪一项?
  • 如何用python编写一个程序
  • JavaScript toFixed() 方法
  • javascript怎么用
  • jQuery Ajax 全局调用封装实例代码详解
  • 四川省地方税务局2017年1号公告
  • 如何查询企业税务评级
  • 电子税务局增值税申报表下载
  • 企业所得税法里财产转让所得是什么意思
  • 我国国家宪法日是每年的十二月几日
  • 发票上纳税人识别号
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设