php区分线上环境和测试环境
一般我们在做开发的时候,程序都会运行在多个环境,起码会3个:开发环境、测试环境、生成环境
三种环境的配置信息是不一样的
数据库配置不一样、debug级别不一样、日志记录级别不一样、缓存不一样,等等。
但是我们用版本管理工具的时候,代码在三种环境下是一样的,所以,如何区分当前运行的是那个环境?
方案1. 是使用.env文件,这个文件不会托管到版本库,每个运行环境都是独立配置的
方案2. 准备多份配置文件,比如config.php、config-local.php,config.php托管在版本库,配个人都一样,config-local.php不托管在版本库,每个人独立配置,运行的时候config-local.php会覆盖config.php中的配置项,缺点是每次搭建环境都需要配置这个文件,比较繁琐。有些人会直接复制config.php为config-local.php,结果导致更改了config.php,其他开发人员不会生效。
方案3. 使用系统环境变量
1 Apache的环境变量设置指令:SetEnv RUNTIME_ENVIROMENT DEV
配置格式:
123456Se ...
vue教程
1 vue安装1.1 直接用 script标签引入对于制作原型或学习,你可以这样使用最新版本:
1<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
对于生产环境,我们推荐链接到一个明确的版本号和构建文件,以避免新版本造成的不可预期的破坏:
1<script src="https://cdn.jsdelivr.net/npm/vue@2.6.11"></script>
1.2 NPM创建12345678//安装vuenpm install vuenpm install -g @vue/cli//创建vue项目vue create project_name//qcd project_namenpm run serve
1.3 使用HbuilderX创建vue项目
1.4 快速启动vue-element-admin1234567891011# clone the projectgit clone https: ...
php实现转盘游戏后台奖品按照概率发放
游戏转盘PHP后台实现奖品发放1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495<?phpheader("Content-type:text/html;charset=GB2312"); //设置编码//中奖奖品$prizeArr = array( 0 => array('id' => 1, 'prize' => '现金500W', 'v' => 1), //概率为1/200 1 => array('id' => 2, 'prize' => 'iphone7', ...
laravel教程
1 创建laravel项目创建laravel项目,需要使用composer工具,所以需要先安装composer,composer官网。
然后使用命令行进行安装,安装命令如下:
12composer create-project laravel/laravel {project-name} {laravel version} --prefer-dist {project-path}# ex. composer create-project laravel/laravel myBlog --prefer-dist
其中,
{project-name}表示你创建的laravel项目名
{laravel version}表示laravel项目的版本号,默认是最新的版本
{project-path}表示项目创建的地址,默认是命令行存在的那个目录下,这个可以不用写。
2 启动laravel项目2.1 方式1在项目的根目录下,使用以下命令进行启动:
1php artis ...
linux中批量替换目录下所有文件内容的方法
method112sed -i "s/oldString/newString/g" `grep oldString -rl /path`sed -i "s/oss_room_v2/oss_bi_all_room/g" `grep oss_room_v2 -rl /home/hadoop/nisj/automationDemand/idfaQuery`
method212grep oldString -rl /path | xargssed -i "s/oldString/newString/g"grep data_chushou_pay_info -rl /home/hadoop/nisj/automationDemand/idfaQuery | xargs sed -i "s/data_chushou_pay_info/oss_bi_all_chushou_pay_info/g"
也可以在grep子句中添加过滤,如:【grep oss_room_v2 -rl /home/ha ...
PHP中CGI、CLI、FPM是什么
回答一刚开始对这个问题我也挺纠结的,看了《HTTP权威指南》后,感觉清晰了不少。
首先,CGI是干嘛的?CGI是为了保证web server传递过来的数据是标准格式的,方便CGI程序的编写者。
web server(比如说nginx)只是内容的分发者。比如,如果请求/index.html,那么web server会去文件系统中找到这个文件,发送给浏览器,这里分发的是静态数据。好了,如果现在请求的是/index.php,根据配置文件,nginx知道这个不是静态文件,需要去找PHP解析器来处理,那么他会把这个请求简单处理后交给PHP解析器。Nginx会传哪些数据给PHP解析器呢?url要有吧,查询字符串也得有吧,POST数据也要有,HTTP header不能少吧,好的,CGI就是规定要传哪些数据、以什么样的格式传递给后方处理这个请求的协议。仔细想想,你在PHP代码中使用的用户从哪里来的。
当web server收到/index.php这个请求后,会启动对应的CGI程序,这里就是PHP的解析器。接下来PHP解析器会解析php.ini文件,初始化执行环境,然后处理请求,再以规定CGI规定的格 ...
一台电脑如何管理多个ssh key
需求:一台电脑上(Mac os)管理多个ssh key,可以任意切换,达到多用户(账号)使用不同ssh提交代码。
以下利用bitbucket和github账号来做例子。
一、生成ssh key1.1 生成密钥(必须)1ssh-keygen -t rsa -C "youremail@yourcompany.com"
注解:
密钥类型可以用 -t 选项指定。如果没有指定则默认生成用于SSH-2的RSA密钥。这里使用的是rsa。
同时在密钥中有一个注释字段,用-C来指定所指定的注释,可以方便用户标识这个密钥,指出密钥的用途或其他有用的信息。所以在这里输入自己的邮箱或者其他都行。
若一路回车(密码可以不写),这样只会在~/.ssh/ 目录下生成 id_rsa 和 id_rsa.pub 两个文件。
1.2 设置路径 (可选)为了区分,我们在第一个回车后设置路径,进行第二步
12345id_rsa_bitbucketid_rsa_bitbucket.pubid_rsa_githubid_rsa_github.pub
1.3 指定密语字符串(可选)
输入完毕后程序同时 ...
用PHP写sqlbulider
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220 ...
jetbrain软件使用技巧
一、常用快捷键1.1 编辑
快捷键组合
说明
Ctrl + Space
代码自动完成提示(选择)
Alt + Enter
显示意图动作和快速修复
Ctrl + P
参数信息(在调用方法参数忘记的时候,提示)
Ctrl + Q
快速查找文件,可以查找当前类定义的文件等
Ctrl + 鼠标滑过
基本信息
Alt + Insert
生成代码…(细节需要多次操作会发现很有意思)
Ctrl + O
重写方法(在PHPStorm中是重写父类方法,会有选择框)
Ctrl + I
实现方法(一般是指实现接口类或抽象类方法)
Ctrl + Alt + T
环绕代码块 (if..else, try..catch, for, 等)
Ctrl + /
单行注释(//)
Ctrl + Shift + /
块注释 (/**/)
Ctrl + W
选择依次递增的代码块,具体使用目前来看比较少
Ctrl + Shift + W
去掉当前选择返回上一个选择,类似于撤销选择,与上面的相反
Ctrl + ...
javascript教程
写在最后欢迎大家关注鄙人的公众号【麦田里的守望者zhg】,让我们一起成长,谢谢。