作者归档:chenlong

几种程序报警通知的方式

线上的项目出现错误不能及时知道怎么办?不及时处理影响用户体验怎么办! 在error_handle 和exception_handle 方法里添加提醒方式。 有以下几种比较及时的方式: 1.短信接口。缺点是得浪费点钱。(不过一条就6分左右。这种费钱的报警必须注意控制频率。避免碰到访问量大时出现错误报警,持续狂刷,瞬间几千条短信耗完。可以借助memcache 几分钟报警一条。) 2.发邮件 + 微信开启邮件插件。 通知很及时! 3.qq机器人。 网上关于qq机器人的php版程序很多。主要是通过curl模拟了3g.qq.com的聊天过程。组织header,抓取响应的header 弄到sid,设置一些cookie,反正搞得跟3g.qq.com走网页一样就行了。curl_setopt 那个header选项设置为 true 便于能抓到header。 4.发送微信消息。 进微信公众平台 http://mp.weixin.qq.com/cgi-bin/loginpage?t=wxm-login&lang=zh_CN 然后你就用firebug或者chrome开发者工具研究怎么模拟提交表单吧。你要是看看qq机器人的程序弄这个很容易的。 好像是要设置2个cookie mp_user=gh_xxxxxxxxxxxxxxx mp_sid=RjU3cUQ1UU1ZVkloYXhrZE5ETUJLSmM0Q2MxYmpqaVlvcGxadThLcTJwSGNWWnFGQWJmalNwbHNCbkRTR1dOMWk3X0xkSWFmNlBzME1RRmxaU0NPZVhmUWhSRlZNc1cxeFVNTEJVWUZKbkdzY2lMOFl0T3FxSnQ1aUJYMmppSHc   进去后再看看发送给某人消息怎么发的吧。就是后台这块发消息用的一个fakeId 。你在要给某个用户发消息时链接上可以看到。 用户管理: http://mp.weixin.qq.com/cgi-bin/contactmanagepage?t=wxm-friend&lang=zh_CN&pagesize=10&pageidx=0&type=0&groupid=100 给某个用户发消息: http://mp.weixin.qq.com/cgi-bin/singlemsgpage?fromfakeid=60890145&msgid=&source=&count=20&t=wxm-singlechat&lang=zh_CN 提交 : 网络 – 保持一下。 http://mp.weixin.qq.com/cgi-bin/singlesend?t=ajax-response&lang=zh_CN post参数: ajax 1 … 继续阅读

发表在 工作总结 | 标签为 , , , , , | 留下评论

关于safari浏览器请求apple-touch-icon等

前阵子看接口日志,发现很多图片的url 404错误。大概都是apple-touch-icon.png 或者apple-touch-icon-precomposed.png 或者一些带尺寸大小的图片。因为名称上带apple,我就盯着日志,用iphone访问了一下网址,发现在想收藏网页或者放到桌面时(也就是点那个分享按钮弹出选项层时,会掉网站的缩图),这个时候触发请求了图片的那种url,导致出现404.然后我随便弄了个图片,弄成那个图片名,就出现指定的图片作为缩略图了。后来用各种ios访问过。发现还有好几种图片。什么precomposed、带尺寸的72*72,114*114的等等。后来百度了一下,有很多文章提到了这个。虽然作用不大,但是增加网站形象认知度还是有点作用的。。。 另外再head 部分加个<meta name=”apple-itunes-app” content=”app-id=9999999″>  id为苹果软件地址的id 用safari浏览时顶部出个弹层显示软件安装状态。对于引导新用户安装挺好的。 另外发现一些相关的好文章: WebApp化apple-touch-icon http://uecdcn.diandian.com/post/2012-07-06/40030373829 苹果图标apple-touch-icon-precomposed和apple-touch-icon两种设置的区别探究 http://blog.163.com/agw_slsyn/blog/static/3091511220124413037195/ iPhone 5/iOS 6 前端开发指南 http://www.iteye.com/news/26171

发表在 工作总结 | 标签为 , | 留下评论

【转】shell 编程之2>&1

经常可以在一些脚本,尤其是在crontab调用时发现如下形式的命令调用 /tmp/test.sh > /tmp/test.log 2>&1 前半部分/tmp/test.sh > /tmp/test.log很容易理解,那么后面的2>&1是怎么回事呢? 要解释这个问题,还是得提到文件重定向。 我们知道>和<是文件重定向符。那么1和2是什么? 在shell中,每个进程都和三个系统文件相关联: 标准输入stdin  文件描述符分别为1 标准输出stdout文件描述符分别为2 标准错误stderr文件描述符分别为3 所以这里2>&1的意思就是将标准错误也输出到标准输出当中。 下面通过一个例子来展示2>&1有什么作用: $ cat test.shtdate test.sh中包含两个命令,其中t是一个不存在的命令,执行会报错, 默认情况下,错误会输出到stderr。date则能正确执行,默认输出到stdout,显示时间。 ./test.sh > test1.log./test.sh: line 1: t: command not found $ cat test1.logTue Oct 9 20:51:50 CST 2007 date的执行结果被重定向到log文件中了,而t无法执行的错误打印在屏幕上。 … 继续阅读

发表在 Linux | 标签为 | 留下评论

linux下安装php的memcache、memcached的扩展及memcache服务端

一会d的一会不带d的,服务跟扩展是不是搞晕了? memcache-3.0.5.tgz 提供memcache扩展libmemcached-1.0.4.tar.gz、memcached-2.0.1.tgz 提供memcached扩展memcached-1.4.6.tar.gz 为上面2个扩展方式提供服务,memcached服务器(守护进程) 就像其他服务mysqld、httpd 安装地址可以看php手册 函数 最新手册:http://code.google.com/p/phpdoc-zh/比如想安装memcache扩展,手册里搜索memcache 查看Memcache 查看 安装/配置 下的安装 有地址显示http://pecl.php.net/package/memcache memcache扩展:http://pecl.php.net/package/memcache tar -zxvf memcache-3.0.5.tgzcd memcache-3.0.5 /usr/local/php/bin/phpize./configure –with-php-config=/usr/local/php/bin/php-configmake && make install (扩展配置方式同下面memcached的,很多php的扩展都是通过phpize搞定的) memcached扩展:http://pecl.php.net/package/memcached(summary:PHP extension for interfacing with memcached via libmemcached library)通过libmemcached 库与memcached服务交互的php扩展 tar -zxvf libmemcached-1.0.4.tar.gz cd libmemcached-1.0.4 ./configure make && make … 继续阅读

发表在 Linux | 标签为 , , , | 留下评论

安装svn

参考:http://blog.iterse.com/archives/584 安装软件时需要开启某个扩展 –with-xx=?之前老是想着yum方式装的xx在哪里,=后面的参数应该如何写! 如果系统已装过xx 就不用=?让其自己去找。如果configure报错缺少该库,可能是该库没装上或者是没有装完全。yum install xx* -y 把相关的都装了再试试。有的是安装包下面有扩展的文件夹。比如svn的源码包下面就有zlib文件夹  –with-zlib=./zlib 即可。 2个svn相关的tar.gz包解压到同一文件夹了./configure –prefix=/usr/local/svn   -with-zlib=./zlib#设置svn命令环境变量echo “export PATH=$PATH:/usr/local/svn/bin” >>/etc/profilesource /etc/profilemkdir /data/svndatacd /data/svndatasvnadmin create test svnserve -d –listen-port 8443 -r /data/svndata cd /data/wwwroot/phpsvn co svn://localhost:8443/test windows测试。。。

发表在 服务器端 | 标签为 , | 留下评论

yum配置+PATH设置+nginx少库+sphinx不建立索引+mysql连接慢的处理方法

vim /etc/sysconfig/network-scripts/ifcfg-eth0 //修改ip    ifconfig eth0:1 再加个ipvim /etc/resolv.conf //修改dns rhel-debuginfo.repo中 []需对应name baseurl check gpk 等   错误在 把[debuginfo] 认为是整体的父节点。不存在父节点的概念。 因/etc/init.d -> /etc/rc.d/init.d /etc/init.d/mysqld start/etc/rc.d/init.d/mysqld start service mysqld start相等 添加环境变量:1、直接用export命令: (当前终端有效)#export PATH=$PATH:/new_path 2、修改profile文件: #vi /etc/profile 在里面加入:export PATH="$PATH:/new_path" 3. 修改用户主目录下的.bash_profile(里面读取.bashrc)或者.bashrc文件: (每个用户目录下都有.bashrc,ls -a查看)# vi /root/.bashrc在里面加入:export PATH="$PATH:/new_path"   … 继续阅读

发表在 Linux | 标签为 , , , , , , | 留下评论

【转】PHP正则表达式-贪婪与懒惰匹配

过去一直感觉这个地方很不好懂,今天又大致的看了一下,拿来跟大家共享一下,呵呵! 当正则表达式中包含能接受重复的限定符(指定数量的代码,例如*,{5,12}等)时,通常的行为是(在使整个表达式能得到匹配的前提下)匹配尽可能多的字符。考虑这个表达式:a.*b,它将会匹配最长的以a开始,以b结束的字符串。如果用它来搜索aabab的话,它会匹配整个字符串aabab。这被称为贪婪匹配。有时,我们更需要懒惰匹配,也就是匹配尽可能少的字符。前面给出的限定符都可以被转化为懒惰匹配模式,只要在它后面加上一个问号?。这样.*?就意味着匹配任意数量的重复,但是在能使整个匹配成功的前提下使用最少的重复。现在看看懒惰版的例子吧:a.*?b匹配最短的,以a开始,以b结束的字符串。如果把它应用于aabab的话,它会匹配aab和ab(为什么第一个匹配是aab而不是ab?简单地说,最先开始的区配最有最大的优先权——The Match That Begins Earliest Wins)。表5.懒惰限定符*?重复任意次,但尽可能少重复+?重复1次或更多次,但尽可能少重复??重复0次或1次,但尽可能少重复{n,m}?重复n到m次,但尽可能少重复{n,}?重复n次以上,但尽可能少重复

发表在 默认分类 | 标签为 , | 留下评论

sphinx完整例子

接着 http://hi.baidu.com/zxsz4085/blog/item/ad2986d55e5e181ea18bb7da.html <?phpinclude ‘sphinxapi.php’;$sp = new SphinxClient();$sp->SetServer(’192.168.26.11′, 9312);$sp->SetConnectTimeout(5); $sp->SetLimits(0, 10);//($start, $limit);可以搞分页 $keyword=(isset($_GET['kw'])&& !empty($_GET['kw'])) ?trim($_GET['kw']) : ‘test’; $index_name = ‘test1′; //在执行搜索之前,可以加入各种条件$result=$sp->Query($keyword,$index_name);//print_r($result);//处理$result$matches = isset($result['matches']) ? $result['matches'] : ”;if ($matches == ”){return array();}$ids = array_keys($matches); $id_str = implode(",", $ids);//echo $id_str; //去mysql用id查询结果 //拿着id ,拉库$link … 继续阅读

发表在 默认分类 | 标签为 , , | 留下评论

linux安装sphinx

coreseek官方手册灰常详细:http://www.coreseek.cn/products-install/install_on_bsd_linux/ 原理和索引配置就不写了,简单的记录一下使用。 下载tar.gz ./configure –prefix=/usr/local/coreseek –without-unixodbc –with-mmseg –with-mmseg-includes=/usr/local/mmseg3/include/mmseg/ –with-mmseg-libs=/usr/local/mmseg3/lib/ –with-mysql –with-mysql-includes=/usr/local/mysql/include –with-mysql-libs=/usr/local/mysql/lib 为方便也copy官方说明的直接用,sphinx-min.conf.dist  我复制了一个 改名为csft.conf 这文件里面配置了一个 索引名叫test1的,source 处稍微改一下,比如数据库用户名密码,连接的库等。改成自己想用的。 测试数据是 coreseek/etc/example.sql  mysql -u root -p 123 use test source /usr/lcoal/coreseek/etc/example.sql 也可以在nginx下配置个 phpmyadmin,去windows下访问导入多爽:如 server {        listen       80;        server_name  mysql.120.net;        autoindex on;        root   … 继续阅读

发表在 Linux | 标签为 , , , , , | 一条评论

vmnet1,vmnet8

经常喜欢在windows下安装个虚拟机vmware,安装个linux。我装的是redhat。 (有的iso生成自动安装脚本,妨碍你想自动分区等。启动后等开始了 停止 vm-settings–cd/dvd 有2个,有一个就是自动的那个脚本,remove 再次power on 就不会自动分区等了。) 网络连接方式: vmnet0(桥接):跟主机一样占一个实际路由提供的ip  如主机为0.1 虚拟机ip为0.2 vmnet1(host-only):只是跟主机通信,不能上网。 网上邻居-vmnet1 查看ip 比如 192.168.174.1 将 虚拟机设置为统一网段如192.168.174.11  vmware –vm–settings–network adapter 选择hostonly 即可。用putty连接测试。 vmnet8(nat):共享主机网络上网。 网上邻居-vmnet8 查看ip 比如 192.168.26.1 将 虚拟机设置为统一网段如192.168.26.11  vmware –vm–settings–network adapter 选择nat 即可。用putty连接测试。关于nat原理还在学习中。   设置ip方式:vim /etc/sysconfig/network-scripts/ifcfg-eth0  # … 继续阅读

发表在 Linux | 标签为 , | 留下评论