如何防止一个函数执行时间过长呢?在PHP里可以用pcntl时钟信号+异常来实现。
代码如下:

root@192.168.137.158:~/php/swoole_study_codes# php timeout.php
PHP Exception:   in /root/php/swoole_study_codes/timeout.php on line 19
PHP Stack trace:
PHP   1. {main}() /root/php/swoole_study_codes/timeout.php:0
PHP   2. a() /root/php/swoole_study_codes/timeout.php:26
PHP   3. sig() /root/php/swoole_study_codes/timeout.php:5
timeout
Stop
a finishi
Stop

     原理是在函数执行前先设定一个时钟信号,如果函数的执行超过规定时间,信号会被触发,信号处理函数会抛出一个异常,被外层代码捕获。这样就跳出了原来函数的执行,接着执行下面的代码。如果函数在规定的时间内,时钟信号不会触发,在函数结束后清除时钟信号,不会有异常抛出。
来源自rango兄弟的博客:http://swoole.sinaapp.com/archives/64
  21andy这兄弟,还说备份呢,没有想到这两天他vps没挂,好像blog估计是挂了吧,这篇文章来自百度的快照,如下,值得参考和实践。
阅读全文
Session其实是和cookie有联系的,通过session_id()作为浏览器里的cookie发送给浏览器,下次浏览器就像PHP客户端发送这个session_id(Cookie)后,服务器于是就知道这个用户是谁,通过session_id获取到所有的当前用户设置的session数组,因session是隐私,所以,在一个PHP里是没法获取到所有用户的session的,只能获取到当前,要想获取所有的,得记录到文件中(有session的用户访问)才行获取到程序设置的session值,否则,只能从服务器里的session文件中去提取(可能要对文件进行破解)。


阅读全文
在XML文档中使用类似"<" 的字符, 那么解析器将会出现错误,因为解析器会认为这是一个新元素的开始,组合XML字符串时遇到了< 。需要转义。
PHP5自带的simplexml_load_file对这个xml解析内容为空是因内容里包含:
<![CDATA[标题3]]>  内容里有 <> 特殊字符,所以,解析不到值。

又是一个鸡肋,为什么要说又呢?呵呵。

XML 的 CDATA,即 <![CDATA[ 与 ]]> 之间可以放 <、>、&、'、" 字符,由于 CDATA 中的内容不会被解析,所以上述字符在 CDATA 中不会造成 XML 的错误,否则“<”会被当作一个标签的开始。

但是,重要了。CDATA 中仍然不能放一些东西:

一是放特殊符号危险,比如“”,可能某些解析器认识,某些解析器不认识,解决办法:XmlTextReader 解析 XML 时遇到特殊字符出错。
二是不能放 <![CDATA[ 和 ]]>。像我们的 IT 类文章中可能经常出现这些字符,出现了,若写在 XML 势必出错,解决办法是用 System.Web.HttpUtility.HtmlEncode 将 <、>、&、'、" 进行编码,取值时再解码。那问题来了,既然已经编码了,还要 CDATA 做什么?


最后,在一个兄弟那儿看到是支持CDATA的PHP也可以解析,如下:
http://hi.baidu.com/yinqinlong502/item/e4dfc900a977ed1acc34eae9
php 解析xml遇到cdata怎么办
用$rss = simplexml_load_file ( '11111.xml', 'SimpleXMLElement', LIBXML_NOCDATA );哎就为了这么个函数我还去写正则准备替换了,白白废了我两小时,shit!!!以后多注意下那些函数的可选参数吧。长点教训.
直接输入xml内容为参数的也支持CDATA的解析,如下:


阅读全文
[属性名称] 匹配包含给定属性的元素
[att=value] 匹配包含给定属性的元素 (大小写区分)
[att*=value] 模糊匹配
[att!=value] 不能是这个值
[att$=value] 结尾是这个值
[att^=value] 开头是这个值
[att1][att2][att3]... 匹配多个属性条件中的一个

===========================================下面举例================================

                   <UL id=comparePro>
                        <li id=compare_prod_list_001>信用卡贷款活动产品1-中国建设银行</li>
                        <li id=compare_prod_list_002>信用卡贷款活动产品2-中国建设银行</li>
                        <li id=compare_prod_list_003>信用卡贷款活动产品3-中国建设银行</li>

                        <li id=other>其他</li>
                    </UL>

要取到所有 id以compare_prod_list_开头的<li>   :  var list=$('li[id^=compare_prod_list_]');

来自:http://cyxu2004.blog.163.com/blog/static/457687182011112851043/

<tr align="center" id="_tr_809401de-0f4b-11e1-b237-001e0bdc11a2" class="odd">
这样的没有时刷新页面的判断(后面的Id值是每一个不一样的):
WP Evernote Site Memory:
Evernote面向站长提供了Site Mmeory,以方便网站的访客能够方便的将当前页面的内容收藏到Evernote里。主要通过调用一个JS脚本来实现,但对于站长来讲并不方便,尤其是Wordpress博主,一旦添加之后,全站所有文章将都会有这个按钮。
通过Evernote Site Memory插件,可以:
1、只在添加有特定标签的文章后面显示按钮;
2、方便快捷的编辑Site Memory的设置;
3、不需要修改任何代码;
版本:0.9
插件介绍:http://chensd.com/plugins
发布日期:2010-11-13
下载地址:http://wordpress.org/extend/plugins/evernote-sitememory/
注意:要修改一下VMware里的DHCP分配值才能生效,其余到也没什么:
细节: 在修改注册表的IP后,再次修改vmware里的dhcp一次(变化下值),然后就是下面的第二点(二),这个二要不弄好,还是上不了网的,特别注意。

把笔记本上的Vmware下安的Centos6.3移植到台式机上,新安vmware后,想同一个ip(Vmware8),出现:
Start IP addresss is invalid.It must be greater than the subnet IP address.
比如:比如以前是192.168.98.2重装之后就变成了192.168.255.2,后想修改为98.2,就出现了上面的提示。

实际遇到的情况在Vmware6.0上:
下在操作是对的,但同时要注意操作后通过DHCP获取IP时还是原来的,这时你需要重新修改一下(显示是变了,但是没有生效)在vmware server控制台的Host-Virtual Network Settings...里面的DHCP Vmware8下的IP:如由:192.168.137.128 修改为:192.168.137.138,后再Linux下运行:service network restart 即可,这样就变为了:192.168.137.138 ,否则还是原来的:192.168.244.128.
二:那个GateWayIp也就是Vmware下的Linux的DNS设定值:/etc/resolv.conf  nameserver 192.168.137.1 这个值是在Vmware里有设置的地方的(不设置会没法上网的),在这儿:在vmware server控制台的Host-Virtual Network Settings...里面的NAT,VMnet8,Edit,由:192.168.137.2 修改为:192.168.137.1 (就是Vmware8的虚拟网卡的IP地址)。
阅读全文
   node.js解决了异步问题,但没解决并行问题,于是有疯子想把node.js用C扩展方式做成并行,为什么呢?
是因为Erlang和Golang是未来的主流语言,而nodejs是单线程而不能很好利用多核CPU的问题,于是有人想给它增强能力(尽管有cluster),
也想学go和erlang从语言层面上来解决问题。
但是现在GO语言和erlang已经在语言层面解决了并行问题,我觉得主要是多核心的利用,并行是必然趋势。
自己要做这些事情得自己学会进程调度,队列,信号等,像erlang和go,程序员不需要关心进程线程调度的问题,它在底层就封装好了。
之所以node.js有很多人学是因为,node.js主要是语言是JS。这让很多有前端经验的人可以很空易掌握。但是node.js也有些问题的,比如网络模块缓冲区总是64k。
如果要对核心的东西做调整还是挺麻烦的。你可用js写游戏可以跨所有的手机平台包括网页版,所以node.js也是个工具,不是语言。不是node.js火,是js火,搭了html5的顺风车。
新在啊儿呢,这个Nodejs:js基本上一个有任意语言经验的coder可以在一周内上手做项目。只要提供好项目管理,把规范之类的做好。成本之低。如果是c++:c++我花了两周一路是坑。
都是在html5上下功夫,不过问题是, html5游戏的商业模式好像不太清晰。个人觉得吧,做终端, 老老实实用原生语言去做, html5带来的好处好像意义没那么大。
现在html5这个工作组在做一个事情就是给-x绑定一个js引擎。用c++提供图形渲染。js处理业务逻辑。我跑过几个demo,性能还不错。
所以,我一直对html5持谨慎态度,技术也不热衷,看了看概念,大概了解了下。然后结论是:观望,还不成熟。

     有人说最近几年游戏火,lua脚本就火了,和js一样很像python那样的胶水语言,能在线更新更能兼容浏览器,lua跟我刚说的Js一样的概念。 lua去调原生的c++,lua只是执行逻辑处理。他也是在app里集成了一个lua的引擎,还给lua绑定了一些cocos2d的接口,。lua现在用的已经很成熟了,多如牛毛,不多讲。

                                                                                                        Writen by :jackxiang   2013-01-11 17:30:00


附录:
嗯,node.js可以实现那个http王浏览器推数据么?
跟nodejs没太大关系吧。都可以实现
那前端怎么搞?取数据时我一直觉得是个难题。
一个长链接挂着。
有数据来就处理罗
浏览器那边也这样子搞?
websocket  向浏览器推 后端可以使用nodejs 加前端使用socket.io 可以实现

如果php用的多 后端可以使用  https://github.com/bergie/dnode-php  也是事件模型 跟node一样
也可以使用 https://github.com/cboden/Ratchet  用php实现的websocket server,通信协议使用wamp
http://socketo.me/ http://wamp.ws/  可以看看

如果真的要实现 server->client传数据,不建议直接采用socket.me上面的js库,desktop上面浏览器对web socket支持的不错,但是无法兼容android浏览器,所以可以使用socket 支持flash socket.
socket.io

启一个socket tcp 也没什么,XMPP的server,openfire 号称单机支持30万长连接
看到composer.json了吗
去查查 是什么东西
一个php的标准库
很好很强大的
这是个好玩意儿,比pear 强几百倍
现在多数优秀开源库都能用 composer 装
我还没用完全采用composer  
是用libevent + stream扩展函数来实现底层的

网络编程不熟悉的  建议还是不要使用事件模型写程序
几个核几个worker,就像nginx一样。
好好研究下nginx source
我主要是从 下面的员工说的  因为事件的机制不好控制,没有顺序执行起来方便易编写,需要员工的水平比较高。

的nodejs 用了下,有好的地方 也有让人很不爽的地方。感觉不是很稳定,多线程fork出来的程序,采用net网络操作时,经常会崩掉

写一个高性能的Server还是挺困难的,像Nginx都用了很多atomic库操作,还有内嵌很多汇编

目前不需要高性能,用做游戏服务端,维护一二千人在线。
足够了
go语言看起来不错,没有广泛使用案例呀。

个人感觉,server再强悍,如果后面挂的业务逻辑卡一点,优势一下就木有了

Go底层是基于epoll的全异步模式,但上层是同步的语法,阻塞时自动切换协程

像我写的swoole这个Server,虽然性能很高,其实极端情况下可能会出错。node.js问题也是有的,这里坑很多的。什么时候把这些填平了,才比较安全  socket都是带缓存区的,假设某个fd缓冲区满了,就要丢数据了
这里缓冲区设大会有问题,设小了丢数据。
呵呵,事件通知机制在更高并发的Server里就是累赘了
所以我们有的Server是直接轮询的,不做通知机制

IE6,IE7下按钮(BUTTON)变宽的解决方法:


来自:http://niutuku.com/tech/css/250633.shtml

或则单独写死在style里:

写在Html页面里宽和高:
点击在新窗口中浏览此图片
据说,从扎克伯格创业初期,这些标语就贴在Facebook的办公室,作为行动准则,激励员工。
虽然这些标语很简单,但是我发现,它们真的具有警醒的效果,能指导你做出正确的事。我正在考虑,将这些标语的链接放到我的首页,每天看一遍。
虽然我把它们译成了中文,但只有看英文,才能感受到里面全部的含义。
1.
Done is better than perfect.
比完美更重要的是完成。
2.
Code wins arguments.
代码赢得争论。
3.
Move fast and break things.
快速行动,破除陈规。
4.
Stay focused and keep shipping.
保持专注,持续发布。
(完)

     最近装装了Windows 7,他想知道有没有人动用他的电脑,问我有没有办法。办法当然有,只需要设置一下就行了,详细步骤如下:
首先启动Windows 7,在搜索栏(控制面板)中输入编辑组,马上就搜索到了编辑组策略,点击即可启动程序编辑组策略。依次展开组策略左侧树形列表的计算机配置/管理模板/Windows组件/Windows登录选项,双击右侧在用户登录期间显示有关以前登录的信息项,弹出在用户登录期间显示有关以前登录的信息对话框,默认状态是未配置,选择已启用单选项,点确定按钮。

     点击窗口右上角的关闭按钮退出编辑组策略后,重新启动一下计算机,这样系统就会在进入系统桌面前提示上次的登录情况,包括登录是否成功,以及详细的登录时间。以后,有没有人动用你的电脑就一目了然了。

    实践Ok。
来源:http://gzm2000.blog.163.com/blog/static/104311620101913751989/

开始 运行 输入cmd
再输入systeminfo
回车
可以了


点击Win7桌面左下角圆形的开始菜单按钮,在搜索框中输入:gpedit.msc ,点击搜索出来的程序,进入组策略设置窗口。进入以后Win7桌面下方的任务栏会出现一个红色工具箱的图标。在Win7搜索框中输入:gpedit.msc ,进入组策略设置窗口,在Win7组策略设置窗口中,选择左边的树形结构,进入“组策略→计算机配置→管理模块→Windows 组件→Windows 登录选项”,点击“在用户登录期间显示有关登录以前的信息”,将这个项目的设置状态改为”已启用“。


透过系统日志 查看win7启动时间
        很多人使用windows7的时候,都觉得windows7的启动速度慢,和windowsXP基本上没得比。笔者认为,windows7慢得有理,毕竟是他的服务和功能要强于XP很多。不过这个也不是肯定的,有的说win7的启动速度和winxp启动相差无几,当然这个也得看配置。到底如何查看windows7的启动时间呢?我们可以通过系统日志来查看。
  其实,我们可以在Windows 7系统下直接查看系统的启动时间。右击桌面上的“计算机”图标,从快捷菜单中选择“管理”,打开“计算机管理”窗口,依次选择“系统工具→事件查看器 →Windows日志→系统”,在右侧窗格中,根据显示的时间(建议选择间隔一天的事件)选择一个事件,在下面的窗格中就可以查看到精确到秒的系统启动时间(如图所示)。

  如果你觉得手工定位比较麻烦的话,那么可以对“来源”进行排序,只在“EventLog”项中进行查找,这样不仅可以查看系统的启动时间,还可以比较在一段时间内的系统启动速度快慢,感兴趣的朋友可以一试。

如我的:
信息  2013/1/9 8:46:12  Kernel-General  12  无
Microsoft-Windows-Kernel-General
操作系统已在系统时间 ‎2013‎-‎01‎-‎09T00:46:12.375199800Z 启动。

测试一下:

如果用双引号引起来:
string(18) "450311199001010516"
string(18) "450311199001010517"
显然是不相等的!

但如果用get方式传入呢?经测试get是相等的:
我很想知道你的get为什么是等的。。。
哎。
有人认为:
最初用户输入时候,进行处理,也就是当字符串了。
这有啥结论的?
就两个知识点:

1、POST GET的,PHP默认都转为字符串处理
2、PHP脚本中,定义的int型,如果超出范围,会被转为float型而失去精度
在很多框架里有这样的情况,一个config文件里直接就return了(return array("name"=>"jack","info"=$infoArr)),但是没有一个函数,于是觉得纳闷了,怎么能这样呢,其实往往这个文件可能是一个共公的return文件,于是就写成这样了,再由其它文件包含进来,如:


自己实践Ok版本:

因为包含的内容里有:
<?php defined('SYS_PATH') or die('No direct script access.');
所以加了一行:
                   define('SYS_PATH', $this->_domain_path . 'libraries' . DIRECTORY_SEPARATOR);
才能读出来。

return 一定要在函数里面吗
没有这么规定吧
中庸就是春江  10:00:27
确实没有这么规定,但你在函数之外使用return就会报错
单曲  10:03:55
php在哪里都可以return的~~
天枫  10:05:27
没有吧
现在一般config文件一般都直接return array
单曲  10:05:46
e你。
嗯。
天枫  10:06:13

反正我这么写
不会报错啊
前程似锦  10:06:23
因为现在的config 都是inc进来的
单曲  10:06:35
inc?
前程似锦  10:06:37
老子的框架也这么搞的
中庸就是春江  10:06:38
js里面是这样的,php不报错?
天枫  10::
include
单曲()  :06:47
$config = 'config.php';
这个config.php  return一个数组
天枫  10:06:56
意思是直接运行这个config文件会报错?
单曲  10:06:59
$config 就能得到这个数组了。
前程似锦  10:07:04
$config = include 'config.php';
中庸就是春江  10:07:04
还能这样?
这个还差不多


     写在最后,在新的版本里是不会报错的,确实这样搞有点违反规则,直接就return,想到main里去么?但框架里往往有这么玩的客观存在。
今天调试遇到一个错误::Call-time pass-by-reference has been deprecated...
查了老一会儿,在网上找了下答案,于是找到了并修改了一下php.ini就好了,如下:
Warning: Call-time pass-by-reference has been deprecated解决方法
修改php.ini就可以了。
1. 在PHP.ini中搜索关键字 : allow_call_time_pass_reference 没有的自行建立。
2. 将 Off 改成 On ,Web Server重起就OK了~
allow_call_time_pass_reference = Off 变成 allow_call_time_pass_reference = On

从php手册中可以找到:
allow_call_time_pass_reference boolean
是否启用在函数调用时强制参数被按照引用传递。此方法已不被赞成并在 PHP/Zend 未来的版本中很可能不再支持。鼓励使用的方法是在函数定义中指定哪些参数应该用引用传递。鼓励大家尝试关闭此选项并确保脚本能够正常运行,以确保该脚本也能在未来的版本中运行(每次使用此特性都会收到一条警告,参数会被按值传递而不是按照引用传递)。
在函数调用时通过引用传递参数是不推荐的,因为它影响到了代码的整洁。如果函数的参数没有声明作为引用传递,函数可以通过未写入文档的方法修改其参数。要避免其副作用,最好仅在函数声明时指定那个参数需要通过引用传递。
当allow_call_time_pass_reference=Off时

要想通过引用来传递参数$b,程序可改为


若是在PHP,用户自定义函数中传入引用参数,例如:

你可能须要开端该设置。

Linux下是这样的报错:Call-time pass-by-reference has been removed
解决 PHP Fatal error: Call-time pass-by-reference has been removed
如果这样使用函数(或者类)的话,会产生一个 PHP Fatal error:
foo(&$var);
实际上,这样用法在php5.3中就会有提示,只是之前的仅仅会提示Deprecated而已。


php.ini中allow_call_time_pass_reference参数的意思

从php手册中可以找到:allow_call_time_pass_reference boolean,在PHP5.3里是一个警告可以用:

来去掉,但是在PHP5.4里就成了一个错误,得修改,如下:

参考:http://www.azuis.me/blog/archives/175
背景:看到一个redis的代码用php写的,用到master和slave结构,用到类的函数里的静态变量,一个master里和slave里都用同一个static $_cache;觉得奇怪了,于是查一下这样用它们之间有关联么?一查没有关联(两个变量一样感觉有关联),这就是静态变量的用法,有点意思。
静态变量只存在于函数作用域内,也就是说,静态变量只存活在栈中。一般的函数内变量在函数结束后会释放,比如局部变量,但是静态变量却不会。就是说,下次再调用这个函数的时候,该变量的值会保留下来。
参考:http://www.nowamagic.net/php/php_StaticVariable.php
一)PHP static静态变量只存在函数里的一个实践情况及应用、实践、总结:



学习PHP静态变量的基础:




输出:01234
也就是每次用:static $a = 0;时,在第二次无效了。
调用的时候 static $count = 0; 语句会重复执行,这为什么不会导致count变量被重复赋值呢?做如下测试:


结果:


代码第5行第一次输出$a的值为4,由此推测PHP在页面初始化的时候分配静态变量的内存,此时使用了同一个变量的最后一次声明的值(这个可以把4改为其他数测试)。代码第7行调用unset函数销毁变量$a,再次输出$a的值时看到未定义变量的提示,说明变量已经被销毁。

第10行再次输出时,输出结果仍是4而不是20,有两种可能,一个是php再次初始化了$a的值,另一种是php使用了$a被销毁前的值,这个问题在第20行输出的时候解决。第16行$a销毁的时候值为10,第19行声明后输出仍为10。

第11行将$a的值修改为10,在14行再次声明$a,17行输出认为10。推测为重复声明时php还是使用静态变量内存中的值,而不再次赋值。

至此,手册中发现的问题,大致上已经解决了,即递归调用中的声明没有改变$count的值,所以递归在$count=10时成功停止。

原文来源:
http://www.cnblogs.com/darkbluever/archive/2011/07/18/2109533.html



PHP static局部静态变量和全局静态变量总结:
静态局部变量的特点:
1.不会随着函数的调用和退出而发生变化,不过,尽管该变量还继续存在,但不能使用它。倘若再次调用定义它的函数时,它又可继续使用,而且保存了前次被调用后留下的值
2.静态局部变量只会初始化一次
3.静态属性只能被初始化为一个字符值或一个常量,不能使用表达式。即使局部静态变量定义时没有赋初值,系统会自动赋初值0(对数值型变量)或空字符(对字符变量);静态变量的初始值为0。
4.当多次调用一个函数且要求在调用之间保留某些变量的值时,可考虑采用静态局部变量。虽然用全局变量也可以达到上述目的,但全局变量有时会造成意外的副作用,因此仍以采用局部静态变量为宜。

---------- 调试PHP ----------
6
7
8

Output completed (0 sec consumed) - Normal Termination

关于静态全局变量:


所以静态全局变量使用并不多。

AddTime:2017/12/11,标题:【php】php函数中static静态变量的使用
用法:
其实函数中的静态变量和类中的静态变量的用法大同小异

function myFunc(){
    //函数内的静态变量只作用于此函数
    static $myVariable='jianzhong5137';
}

实例测试:funstatic.php


php  funstatic.php
1
2
3
4
5
6
7
8
9
10

1
1
1
1
1
1
1
1
1
1

代码来自:http://blog.csdn.net/yanhui_wei/article/details/8246096



二)附上类里的static及用self读取的一个结论:

结论:
(1)、静态属性不需要实例化即可调用。因为静态属性存放的位置是在类里,调用方法为"类名::属性名";
(2)、静态方法不需要实例化即可调用。同上
(3)、静态方法不能调用非静态属性。因为非静态属性需要实例化后,存放在对象里;
(4)、静态方法可以调用非静态方法,使用 self 关键词。php里,一个方法被self:: 后,它就自动转变为静态方法;
背景:

Mysql的sql日志如下配置,前台点链接触发SQL,后台用tail去看查询SQL日志:


找windows下的tail过程及最后找到较好win下的tail软件:

有很多的tail,有的可以终端运行,但是一直按回车时,文字不上移,有的呢,则是xp自动提供的,如:http://support.drugwebcn.com/knowledge/index.php?option=com_content&task=view&id=51&Itemid=43
这些都不怎么样,有的建议安一个cygwin ,这些都太麻烦,我找了一个别人写的界面软件,觉得不错,于是作下对Mysql的sql作下tail,所以,推荐下面这个tail软件,可以有编码选项,查找,清屏,有托盘等便捷,关键是能用回车让已经有的文字上移,鼠标选择多行,不是用alt+鼠标选择:
http://www.duote.com/soft/30978.html

DownLoad Url:
WindowsTail:
http://sourceforge.net/projects/windowstail/files/?source=navbar


上面这个软年看来做得确实不错,如下:
王*(17540***)  16:39:02
党哥,感谢你啊,前两天在网上搜windows下的tail工具,找了好多找不到好的,结果突然有个向东博客justwinit,给出了解决方案,原来是就在我们身边的党哥指明了方向。
王*(17540***)  16:45:47
真的很不错,我搜索windows下tail,党哥就出来帮助我了。
关键是要带回车的
--------------------------------------------------------------------------------------------------
Another tail :
Tail4Win : 这个免费30天,要钱。这个的终端tail做得不错,界面收钱就有点...了吧。
http://www.withdata.com/tail4win_news.html
最新版本的Tail4Win可以实现在cmd下和linux下的tail一样,按回车可以把已经tail的文字上移,也不错,界面的好像没有这个功能。
Egg:
D:\wamp\bin\apache\apache2.2.22\logs>tail -f w.xiyou.cntv.cn-access.log


---
这个也是tail,不怎么样,除开能tail多个文件外,没有回车文字上移的linux特性,感觉不怎么的:
最近因为开发php程序, 虽然有vmware和centos server, 但是还是喜欢windows 下的apache+php+mysql,  无他, 只是因为开发和测试方便, 但是windows下有个非常不方便的地方是, 没有tail去查看log, 本人又不希望为了一个tail命令去装一个庞大的cygwin.

今天在网上搜了一下, sourceforge上有个tail工具不错, 推荐给大家
1. 首先当然是tail功能了, 可以tail多个文件, 如access.log, error.log
2. 关键字高亮功能.
3. workspace管理.
4. 绿色, 免安装, 只有164k

推荐一下, 下载地址
http://sourceforge.net/projects/tailforwin32

这个个人写的tail还成,有一个问题(最后一行保存后出来来):
http://users.telenet.be/jbosman/tail.zip
Linux:启动Memcache的服务器端的命令为:
/usr/local/bin/memcached -d -m 10 -u root -l 192.168.0.200 -p 12000 -c 256 -P /tmp/memcached.pid
vi /etc/init.d/lnmp


直接绑定到某个网卡IP上:

-l <ip_addr>  监听的服务器IP地址,如果有多个地址的话,使用逗号分隔,格式可以为“IP地址:端口号”,例如:-l 指定192.168.0.184:19830,192.168.0.195:13542;端口号也可以通过-p选项指定

Windows:
到memcached根目录
1、安装
memcached.exe –d install  
2、启动
memcached.exe -d start

注意,要先install才行,实践如下:

后运行:services.msc 后可以看到memcache在服务里有这个了:
"D:\wamp\bin\memcached\memcached.exe" -d runservice (注册表里也是这个:在 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\memcached Server 下面找到一个 ImagePath 的字符串项,正好是服务的执行路径的字符串,双击该串,在后面加入 -l 192.168.1.135 -m 45 -p 12345 (访问ip为:192.168.1.135 使用45M内存,12345为端口),再启动服务。 ),启动类型,自动。
如果要修改端口,听说得到注册表里修改:
D:\wamp\bin\memcached\memcached.exe" -d runservice -l 127.0.0.1-m 45 -p 12345 -c 2048  

此时memcached已经注册为开机启动服务
完成安装。

memcache启动后成功于否的测试:
现在来试试是否可以连接:
使用方法为“telnet ip 端口号”,登录后使用“stats”命令
cmd下
telnet 192.168.1.135 12345(注意:这里只能用IP 不能用 localhost 或127.0.0.1)
然后使用:stats命令可以看到memcached的使用情况如下:
我的修改情况为:

记得打开Host,去掉前面的#号:
127.0.0.1       localhost
参考:
http://zhaoshijie.iteye.com/blog/1135608
http://bardo.iteye.com/blog/954770


分页: 93/272 第一页 上页 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 下页 最后页 [ 显示模式: 摘要 | 列表 ]