Monthly Archives: December 2020

  • shopify模板开发从入门到放弃(1): 注册开发者店铺、开发者工具适配

    这个课程是为有对外贸电商领域有兴趣的小伙伴们准备的,主要就是告诉大家怎样通过shopify的liquid语法构建出属于自己的shopify商城模板,当然小伙伴们在学习完以后也可以对一些模板进行自定义的二次开发喽! 主要大纲 shopify开发者店铺注册 开发者工具适配(phpstorm) 1. shopify开发者店铺注册 进入shop partner 注册开发者店铺 在这之前需要小伙伴先注册shopify合作伙伴 访问 https://partners.shopify.com/signup 进行注册即可 中间可能有邮箱认证的步骤 a. 选择development store开发者店铺 b. 选择test an app or theme c. 进入后台,注意我们的后台地址名字 https://williamstart.myshopify.com/admin 到此我们的开发者店铺就全部搞定了 2. 开发者工具适配(phpstorm) 因为笔者最常用的是phpstorm这款开发者工具所以这里就采用了phpstorm作为我们shopify模板的开发工具 a. 先安装twig插件(liquid的语法与twig是一致的) b. 然后发开Editor->filetype 找到twig项目然后在下面的文件后缀栏目加上liquid文件后缀,这样既可以识别shopify的liquid文件内容了 下面是识别后的示例: 最后建议大家也可以用vscode 但是要安装下面的插件

    December 29, 2020 0 0
  • 1. ngnix lua开发专版:ngx_lua运行机制的分析(lua是如何嵌入到nginx请求处理流程里面的)

    主要分析流程 ngnix特点 ngx_lua的特点分析 nginx的http请求流程分析 基于nginx流程的ngx_lua生命周期分析 1. nginx特点 nginx是模块化的结构,每个模块之间并没有强耦合,这也方便了开发者对其进行定制化开发,但是如果我们用c和c++去开发nginx内嵌的程序,我们需要符合 Nginx 的开发规则和数据结构使用,而且需要我们熟悉Nginx源码,再加上调试的复杂度,会极大影响我们的开发周期与效率 1. ngx_lua的特点分析 ngx_lua属于openresty的内部模块,通过这个模块将lua内嵌如nginx的结构中。Lua内建协程,通过协程的挂起与唤醒可以很好的通过回调函数的形式把异步的调用同步化,我们都知道nginx的高性能取决于全异步的调用方式,lua就可以通过协程的方式调用异步的api从而使使用者可以用同步编程的方式编写高性能的异步程序,而且并不影响nginx本身的性能。 ngx_lua把耗时且阻塞的I/O操作都委托给 Nginx 事件模型,从而实现完全的非阻塞调用 协程在挂起时自动保存上下文,工作进程上的 VM 可以处理下一个协程的任务层事件模型完成任务时,根据回调,对应的例程会被恢复上下文,从而继续执行用户操作,这个过程不需要对数据进行同步和匹配,用起来与同步操作无异。 nginx工作模式是管理进程(master process) + 工作进程(worker processes)的模式,我们可以称之为看门狗模式 下面是nginx的看门狗工作模式 对于ngx_lua,我们可以理解为在以上这种基础模式的情况下,加入了lua解释器和lua虚拟机,相当于每个工作进程都有自己独立的lua解释器和虚拟机实例,而且单独工作进程所处理的请求都会共享这个实例。ngx_lua处理请求的方式是“一个请求对应一个协程”,当请求被建立的时候,对应的协程也会被创建出来,当请求完成的时候,这个对应的协程也会被销毁。同时每个协程都有自己的独立全局变量空间,所以请求跟请求之间的协程不会有相互影响,而且代码也会被放入到sandbox沙箱里面,请求创建的时候协程全局变量以及代码sandbox所对应的内存空间都会被创建,请求结束的时候这些内存空间会相应被销毁。 这时候有人可能会担心请求量大,协程数量也随之增大,起对应的内存空间也会增大,那么会不会影响整体系统的性能呢? duck不必担心这个问题,协程是轻量级线程,而且ngx_lua本身给每个协程分配的内存空间在2kb左右,对于系统性能消耗大家不必太担心的。 下面是ngx_lua与nginx本身配合的整体生命周期 整体流程: a. worker process初始化ngnix各个模块 b. event模块检查到有用户请求,然后创建连接 c. 根据nginx配置和请求细节调用对应的handler(假设有ngx_lua的配置),然后调用对应的ngx_lua d. ngx_lua模块调用lua VM,运行对应的代码 e. lua VM 调用lua代码 f. VM 返回结果给ngx_lua g. ngx_lua给http模块返回响应数据 h. http接收到数据后向event模块发出响应 i. event模块向工作进程交出控制权 ngx_lua整体机制: a. 每个工作进程创建对应的lua虚拟机 b. ngnix i/o操作封装为lua使用的api载入虚拟机给我们写的lua代码使用 c. 每个请求都会拉起一个对应的协程进行处理,且协程与协程之间数据是不会相互污染的 d. Lua代码调用i/o等异步接口时,当前协程会被挂起,上下文数据自动保存,不会阻塞工作进程 e. i/O 等异步操作完成时还原线程上下文,继续代码执行 3.nginx的http请求阶段分析 首先看一个结构体: typedefenum{ NGX_HTTP_POST_READ_PHASE = 0, // 接收到完整的HTTP头部后处理的阶段 NGX_HTTP_SERVER_REWRITE_PHASE, // URI与location匹配前,修改URI的阶段,用于重定向 NGX_HTTP_FIND_CONFIG_PHASE, // 根据URI寻找匹配的location块配置项 NGX_HTTP_REWRITE_PHASE, // 上一阶段找到location块后再修改URI NGX_HTTP_POST_REWRITE_PHASE, // 防止重写URL后导致的死循环 NGX_HTTP_PREACCESS_PHASE, // 下一阶段之前的准备 NGX_HTTP_ACCESS_PHASE,…

    December 29, 2020 0 0
  • openresty+lua高并发:(1) win环境下idea配置lua开发环境

    1 准备软件 lua for windows v5.1.4 idea2019版本的 idea配置lua的开发环境 一. 下载lua for win 下载地址,然后一路安装 https://www.anxz.com/down/19788.html 二. idea2019版本自行安装 三. 配置lua的开发环境 1. 安装emmylua 2. 配置sdk 【File】->【Project Structure】 配置lua.exe的运行sdk 3.写一个测试代码 4.运行时候报错 这个时候我们需要调整run configuration 必须要知道的就是我们的执行文件路径必须要清楚,working dir 工作文件路径也要清楚设置才可以成功执行 以下是执行结果:

    December 8, 2020 0 0

Contact Us

在线咨询:点击这里给我发消息

邮件:814489173@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息

QR code