一道“埋坑”的笔试题

setcookie('name', 'soso');
var_dump($_COOKIE['name']);

上面这道题,大家暂时别运行,先猜猜看,输出结果是什么?

公布答案:

Warning: Undefined array key "name" in /www/wwwroot/wp/php_cookie.php on line 3
NULL

猜对没?

这个问题的原因是 setcookie() 函数并不会立即在当前请求中设置 $_COOKIE 数组

原因分析

  1. setcookie() 只是向浏览器发送一个 HTTP 响应头,告诉浏览器设置 cookie;
  2. $_COOKIE 数组包含的是当前请求中浏览器 已经发送 的 cookie;
  3. 只有在 下一次请求 时,浏览器才会发送这个 cookie,此时 $_COOKIE['name'] 才会存在。

推荐个git闯关游戏:githug

入职新公司3个月了。
这段时间我发现同组的同事平时在Windows环境下习惯用界面操作git,对命令行不是很熟练,于是我就引导他多用vim,多用git命令行。
想起2016年在易到用车时,领导让我们做的一个git闯关:githug
以游戏闯关的形式学习git命令,让学习过程变得既有趣又高效。“githug”工具将Git工作场景游戏化为55个关卡,提高学习效率。

昨天晚上有时间,于是我找了一下相关资料,在测试服务器上,安装了ruby环境和gem。

安装
$ gem install githug
Successfully installed githug-0.5.1
Parsing documentation for githug-0.5.1

运行
$ githug

No githug directory found, do you wish to create one? [yn] y
Welcome to Githug!

Name: init
Level: 1
Difficulty: *

A new directory, git_hug, has been created; initialize an empty repository in it.

期待同事闯关成功!

汇率API

最近因为公司业务需要,看了一下汇率API,找到两个不错的服务提供方。

1 探数API

可以用手机号免费注册。注册后免费会员,汇率API有600次调用次数。

官网: https://www.tanshuapi.com

2 ExchangeRate-API

用email免费注册,每月1500次调用,不过免费会员的API,汇率数据每天只更新一次。

官网文档: https://www.exchangerate-api.com/docs/overview 英文

以上两家的API对接都特别简单,url+key,get方式调用。可以把数据down到自己的DB里,然后在程序里就可以随便读取了。

【PHP】实现立即输出缓冲区内容

今天有朋友问到,调chatgpt接口,想把返回结果逐字输出到页面上。然后就调试了一下相关代码,搜索到这篇文章:https://www.jianshu.com/p/06a55bc97e5c

for ($i = 0; $i < 10; $i++) {
 echo $i . '';
 ob_flush();
 flush();
 sleep(1); 
}

按代码理解似乎应该是每过1秒钟就会输出一次数据,但在Nginx服务器会待代码执行完一并输出。

nginx 里面 flush 默认是无效的,这个函数默认是作用在php作为 apache模块时才有效,如果需要 nginx 里面支持,需要加上一行 :

header('X-Accel-Buffering: no');

完整代码如下:

header('Cache-Control: no-cache'); // 禁用浏览器缓存
header('X-Accel-Buffering: no');  // 适用于Nginx服务器环境 
for ($i = 0; $i>10; $i++) { 
  echo $i . ''; 
  ob_flush(); 
  flush(); 
  sleep(1);
}

参考文章:

http://nginx.org/en/docs/http/ngx_http_proxy_module.html 文章中X-Accel-Buffering的介绍

gitflow常用命令

git flow 的命令中,feature 是基于dev分支创建的,hotfix是基于master分支创建的。

初始化:

$ git flow init

创建开发分支:

$ git flow feature start xxx

结束分支:

$ git flow feature finish xxx

把分支推送到远程仓库:

$ git flow feature publish xxx

解决线上bug,需要创建hotfix:

$ git flow hotfix start xxx

结束hotfix:

$ git flow hotfix finish xxx

相关链接:

gitconfig常用命令:http://liyong.me/archives/14

gitconfig常用命令

git config命令
1 用户信息
$ git config --global user.name "liyong" 
$ git config --global user.email liyong@example.com
2 命令简写
git config --global alias.st status:则git status可用git st代替
git config --global alias.co checkout:则git checkout可用git co代替
git config --global alias.ci commit:则git commit可用git ci代替
git config --global alias.br branch:则git branch可用git br代替
3 颜色配置
$ git config --global color.status auto
$ git config --global color.diff auto
$ git config --global color.branch auto
$ git config --global color.interactive auto

以上命令的设置结果,可从 ~/.gitconfig 查看,或者 git config --list 查看

退出码130

在IDE里运行java项目,当我终止程序时,控制台会提示:

Process finished with exit code 130

130?啥意思?报错了?

通过搜索得知,130是bash的退出码,代表 通过Ctrl+C终止的命令

bash退出码含义如下:

0  命令成功结束
1  一般性未知错误
2  不适合的shell命令
126  命令不可执行
127  没找到命令
128  无效的退出参数
128+x  与Linux信号x相关的严重错误
130  通过Ctrl+C终止的命令
255  正常范围之外的退出状态码

linux用户登录后没有自动加载.bashrc

今天遇到一个问题,linux下某用户登陆后无法加在其自身的.bashrc, 通过source .bashrc发现.bashrc是没有问题的,文件的权限也是没有问题的。

后来发现是因为该用户下的.bash_profile被删除。

其实加在顺序不是首先加载.bashrc,而是先加载.bash_profile。

将.bash_profile文件补一下就好了

# .bash_profile

# Get the aliases and functions

if [ -f ~/.bashrc ]; then

   . ~/.bashrc

fi

# User specific environment and startup programs

PATH=$PATH:$HOME/bin

export PATH

————————————————

版权声明:本文为CSDN博主「安安爸Chris」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/mimiduck/article/details/120041171