php 用做脚本时的一些技巧

-r 参数可以直接执行一段代码,不需要 <?php
例如 php -r ‘phpinfo();’

-R 参数可以对标准输入的每一行执行一段代码。会有两个变量,$argi 是行号, $argn 是当前行内容。
例如 ls | php -R  ‘echo “$argit$argnn”;’

-B,-E 分别表示在整个处理输入的开始和结束时执行的脚本。
比如 ls | php -R  ‘echo “$argit$argnn”;’ -B ‘echo “Beginn”;’ -E ‘echo “Endn”;’
结果会是

Begin
1       a.txt
2       b.txt
3       c.txt

End

更多参数可以看 man php 。

php 用在脚本里有啥好处呢?php 带了很多 web 应用常用的函数。比如转义 html ,url 等等。用来处理这些数据会方便许多。

笔记一下

重启 mysql 时,先
update mysql.user set user=xxx_x where user=xxx;
flush priveleges;
启动之后再update 回来
因为shutdown之前 会把redo log里的脏数据刷到表空间
数据量大的情况下,如果这时候前台还有请求的话,这个过程会非常漫长
一般来说 set global read_only=1; 也可以解决问题

感谢showsa提供这个技巧

 

明白某些发行版里自带的 apache 里,vhosts 分了 site-avaliable 和 site-enabled 有什么好处了。

这样方便在所有的服务器上自动化部署相同的程序代码和 apache 相关的 vhost 配置。哪些服务器上具体跑哪些站点只需要把 site-avaliable 里需要启用的链接到 site-enabled 里就行了。在服务器多的时候就会方便管理。

 

在 linux 的命令行输出进度条

linux 有些个命令比如 wget 会显示一个进度条。终于知道了一个办法弄出这个效果。其实也很简单:
<?php
for ($i = 0; $i <= 50; $i++) {
  printf(“progress: [%-50s] %d%%r”, str_repeat(‘#’,$i), $i * 2);
  usleep(1000 * 100);
}
echo “n”;
echo “Done.n”;

每次用 r 结尾就是了。n 是 new line,r 是 return 。也就是回到行首。

bash 版:

b=”
for ((i=0;$i<=100;i+=2))
do
  printf “progress: [%-50s] %d%%r” $b $i
  sleep 0.1
  b+=’#’
done
echo