PHP下划线的字符串与驼峰命名转换

//将下划线字符串转换为驼峰命名
function string2camel($string) {
return preg_replace_callback(‘/_[a-z]/’, function ($mathes){ return trim(strtoupper($mathes[0]), ‘_’);}, $string);
}
//将驼峰命名转换为下划线字符串
function camel2string($string) {
return ltrim(preg_replace_callback(‘/[A-Z]/’, function ($mathes) { return ‘_’ . strtolower($mathes[0]); }, $string), ‘_’);
}

发表在 学习笔记 | 留下评论

PHP使用curl模拟访问伪造来源的ip和url

$curlObj = curl_init();

curl_setopt($curlObj, CURLOPT_URL, “http://localhost/process.php”);
//构造IP
curl_setopt($curlObj, CURLOPT_HTTPHEADER, array(‘X-FORWARDED-FOR:8.8.8.8’, ‘CLIENT-IP:8.8.8.8’));
//构造来路
curl_setopt($curlObj, CURLOPT_REFERER, “http://www.doitphp.com/ “);
curl_setopt($curlObj, CURLOPT_HEADER, 1);
$out = curl_exec($curlObj);

curl_close($curlObj);

发表在 学习笔记 | 留下评论

PHP函数:ignore_user_abort

ignore_user_abort($value);

设置客户端断开连接时是否中断脚本的执行。

PHP以命令行脚本执行时,当脚本终端结束,脚本不会被立即中止,除非设置 value 为 TRUE,否则脚本输出任意字符时会被中止。

发表在 学习笔记 | 留下评论

CentOS6.5更换Yum源

#cd /etc/yum.repos.d
#mv CentOS-Base.repo CentOS-Base.repo.backup
#wget http://mirrors.163.com/.help/CentOS6-Base-163.repo
#mv CentOS6-Base-163.repo CentOS-Base.repo
#yum clean all
#yum update

发表在 学习笔记 | 留下评论

IE9.0的javascript兼容问题

一个项目,使用了fancybox。在Firefox, chrome这些浏览器上一切正常,IE6.0 ,IE7.0, IE8.0, IE11.0均运行正常,偏偏在IE9.0时无法使用(能弹出窗口,可窗口内该显示的内容则没有),在代码放在本地使用apache作为webserver,本地测试没有问题。放在线上服务器(nginx作为webserver),IE9.0显示不正常。使用console.log()进行调试,也没有找到原因。结果又换成colorbox,也是同样的问题。折腾了半天,最后通过google一下才知道,IE9.0的JS兼容有问题。所以采取了如下办法:
在hmtl的head间加入下面代码,强行在IE9.0上使用IE8.0的标准。

发表在 学习笔记 | 留下评论

rsync+inotify实时同步

技术参考:http://lxw66.blog.51cto.com/5547576/1331048

三台服务器均开启rsyncd服务,其中一台安装inotify tool,这台服务器作为服务端,负责文件推送。
服务端的脚本内容如下:

#!/bin/bash

/usr/local/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f' -e modify,delete,create,attrib /www/ | while read file
do
/usr/local/rsync/bin/rsync -azP --delete --password-file=/root/hadult.pass /www/ tommy@10.50.201.81::demo
/usr/local/rsync/bin/rsync -azP --delete --password-file=/root/hadult.pass /www/ tommy@10.50.201.88::demo
done

/etc/rc.local 文件中添加
/root/sync.sh

重启服务端,然后进行如下测试。
在服务端/www目录中添加文件,更改文件属性,删除文件,这些操作在两台客户端服务器均实现了同步。

测试成功!

发表在 学习笔记 | 留下评论

rsync常用命令范例

rsync进行数据传输分为push, pull两个模式。
下面发两个范例。
1、push
rsync -azP –delete –password-file=rsyncd.pass –exclude-from=not_sync_list.txt /local_path username@xx.xx.xx.xx::modulename

2、pull
rsync -azP –password-file=rsyncd.pass username@xx.xx.xx.xx::modulename /local_path

预知详细的参数及用途,请点击:rsync同步的艺术

发表在 学习笔记 | 留下评论

session save_path使用子目录

session.save_path使用一个目录的弊端是: session量比较大并且所有的session文件都在同一个子目录下的话,那么可能会由此带来很严重的负载问题,甚至导致网站无法使用。在linux共目录下,所支持的子目录及文件总数为三万三千多,当达到一万时,磁盘的IO效率就变得较低了。所以使用session.save_path 分级子目录是一个不错的选择。
具体设置方法:
php源码目录ext/session目录中,mod_file.sh是生成子目录的shell脚本。假设存放session的总目录为 /tmp/php_session。使用3个层级的子目录 每个子目录中又有32个子目录。
则执行命令如下:
#sh mod_file.sh /tmp/php_session 3 32

执行完上面命令后,session的存放目录刚创建完毕,修改目录权限
#chmod 0777 -R /tmp/php_session

更改php.ini将session.save_path设置为:
session.save_path="3;/tmp/php_session"

重启php-fpm或apache(webserver software). OVER

具体资料可参考php官方资料:
http://www.php.net/manual/en/session.configuration.php#ini.session.save-path

注:session存放目录使用子目录的缺点是:过期的session不会自动清除,需定期清除。
如:来个shell脚本删除45分种之前的session
#find /tmp/php_session -mmin +45 | xargs rm -fr

当然也可以放在crontab里,定期执行。

发表在 学习笔记 | 标签为 , | 留下评论

CentOS上yum 安装memcached


#yum -y install memcached

配置文件:
/etc/sysconifg/memcached

参数解释:

-d 以守护程序(daemon)方式运行 memcached;
-m 设置 memcached 可以使用的内存大小,单位为 M;
-l 设置监听的 IP 地址,如果是本机的话,通常可以不设置此参数;
-p 设置监听的端口,默认为 11211,所以也可以不设置此参数;
-u 指定用户,如果当前为 root 的话,需要使用此参数指定用户。

操作命令:

service memcached start
service memcached stop
service memcached restart

发表在 学习笔记 | 标签为 , | 留下评论

使用mysqldump备份与还原mysql数据

时间真是把杀猪刀,记忆力远不如前,以前经常使用的东西,现在用时却记不起来。将mysqldump常用的命令整理出来,作为备忘录。

1、备份MySQL数据库的命令
mysqldump -hhostname -uusername -ppassword databasename > backupfile.sql

2、备份MySQL数据库为带删除表的格式
备份MySQL数据库为带删除表的格式,能够让该备份覆盖已有数据库而不需要手动删除原有数据库。
mysqldump -–add-drop-table -uusername -ppassword databasename > backupfile.sql

3、直接将MySQL数据库压缩备份(这个超方便,可以直接打包下载)
mysqldump -hhostname -uusername -ppassword databasename | gzip > backupfile.sql.gz

4、备份MySQL数据库某个(些)表
mysqldump -hhostname -uusername -ppassword databasename specific_table1 specific_table2 > backupfile.sql

5、同时备份多个MySQL数据库
mysqldump -hhostname -uusername -ppassword –databases databasename1 databasename2 databasename3 > multibackupfile.sql

6、仅仅备份数据库结构
mysqldump –no-data –databases databasename1 databasename2 databasename3 > structurebackupfile.sql

7、备份服务器上所有数据库
mysqldump –all-databases > allbackupfile.sql

8、还原MySQL数据库的命令
mysql -hhostname -uusername -ppassword databasename < backupfile.sql

9、还原压缩的MySQL数据库
gunzip < backupfile.sql.gz | mysql -uusername -ppassword databasename

10、将数据库转移到新服务器
mysqldump -uusername -ppassword databasename | mysql –host=*.*.*.* -C databasename

发表在 学习笔记 | 留下评论