这个内容在cnblogs中也讨论过很多次了,这两天大概看了一些资料,看到一些简单的性能指标拿出来和大家讨论一下。socket + threads/threadpool大概性能:小于1500个连接 实现:accept一个socket,就交给一个线程去管理,比较笨,但也比较有效,因为是同步方式,控制起来很方便。高级点的,就是交给一个线程池去管理,线程池由系统自动托管,省去了开销线程的时间。一般小型项目,用这个完全足够,开发也简单。但要注意,如果若干socket长时间占用线程池中的线程,同时其它连接数又比较多,很容易出现提示说你没有足够的线程供使用。呵呵,让socket少做点事,少占用时间,换一个快点的cpu是不错的方式。另外,如果有一些比较好的第三方线程池组件,也可以选择使用,比如smartthreadpool。socket + select大概性能:大于1500个连接后性能下降 实现:sel...
b> 邮件发送处理 下面是真正的秘密了,可要看仔细了。:) 1 function send( $to,$from,$subject,$message) 2 { 3 //连接服务器 4 $this-$#@62;lastact="connect"; 5 $this-$#@62;show_debug("connect to smtp server : ".$this-$#@62;smtp, "out"); 6 $this-$#@62;fp = fsockopen ( $this-$#@62;smtp, $this-$#@62;port ); 7 if ( $this-$#@62;fp ) 8 { 9 set_socket_blocking( $...
61 //加上结束串 62 if(!ereg("n.n", $message)) 63 $message .= "n.n"; 64 $this-$#@62;show_debug($message, "out"); 65 fputs($this-$#@62;fp, $message); 66 67 $this-$#@62;lastact="quitn"; 68 if(!$this-$#@62;do_command($this-$#@62;lastact, "250")) 69 { 70 fclose($this-$#@62;fp); 71 return false; 72 } 73 } 74 return true; 75 } 76 else 77 { ...
在作者所申请的几个php 主页空间中,能够提供mail功能的实在不多,总是调用完mail()函数之后就毫无下文了。但是电子邮件在网上生活中的作用越来越大。 想一想网虫上网不收邮件能叫真正的网虫吗?邮件的作用我不想再说了,但是如果主页空间不支持mail()发送那么怎么办呢?我也想过通过socket来实现邮件发送,但无奈对用php 进行socket编程不熟悉,再加上发送邮件要用到smtp协议,又要读不少的英文了,所以一直也没有去研究过。终于有一天我发现了一篇文章,关于用socket编程发送邮件。我如获至宝般将其拷贝下来,并且将其改造成了一个php 可用的类,供大家使用。原来的文章只是一个简单的例子,而且还有一些错误,在我经过多次的实验、改造终于将其改成了一个直接使用socket,向指定的邮箱发送邮件的类,如果大家和前面关于发送mime的文章结合起来,就可以实现在不支持mail()函数的网站上...
下面给出一个简单的命令头(这是在打开socket之后做的),是我向stmp.263.net发邮件的测试结果: helo limodou 250 smtp.263.net mail from: chatme@263.net 250 ok rcpt to: chatme@263.net 250 ok data 354 end data with . to: chatme@263.net from: chatme@263.net subject: test from: chatme@263.net test . quit 250 ok: queued as c46411c5097e0 这就是一些smtp的简单知识。相关内容可以查阅rfc。 rfc 821定义了收/发电子邮件的相关指令。 rfc 822则制定了邮件?容的格式。 rfc 2045-2048制定了多媒体邮件?容的格式, rfc 1...
1、httpclient的功能基于标准,纯正java,实现了http1.0和1.1。在一个可扩展的oo框架内,实现了http的全部方法(get, post, put, delete, head, options, and trace)支持https(ssl上的http)的加密操作透明地穿过http代理建立连接通过connect方法,利用通过建立穿过http代理的https连接利用本地java socket,透明地穿过socks(版本5和4)代理建立连接支持利用basic、digest和ntlm加密的认证支持用于上传大文件的multi-part表单post方法插件式安全socket实现,易于使用第三方的解决方案连接管理,支持多线程应用,支持设定单个主机总连接和最高连接数量,自动检测和关闭失效连接直接将请求信息流送到服务器的端口直接读取从服务器的端口送出的应答信息支持http/1.0中用kee...
执行一个命令 1 function do_command($command, $code) 2 { 3 $this-$#@62;lastact=$command; 4 $this-$#@62;show_debug($this-$#@62;lastact, "out"); 5 fputs ( $this-$#@62;fp, $this-$#@62;lastact ); 6 $this-$#@62;lastmessage = fgets ( $this-$#@62;fp, 512 ); 7 $this-$#@62;show_debug($this-$#@62;lastmessage, "in"); 8 if(!ereg("...
send_mail类的实现 现在开始介绍我所编写的发送邮件类。有了上面的预备知识了,下面就是实现了。 类的成员变量 var $lastmessage; //记录最后返回的响应信息 var $lastact; //最后的动作,字符串形式 var $welcome; //用在helo后面,欢迎用户 var $debug; //是否显示调试信息 var $smtp; //smtp服务器 var $port; //smtp端口号 var $fp; //socket句柄 其中,$lastmessage和$lastact用于记录最后一次响应信息及执行的命令,当出错时,用户可以使用它们。为了测试需要,我还定义了$debug变量,当其值为true时,会在运行过程中显示一些执行信息,否则无任何输出。$fp用于保存打开...
显示调试信息 1 function show_debug($message, $inout) 2 { 3 if ($this-$#@62;debug) 4 { 5 if($inout=="in") //响应信息 6 { 7 $m="$#@60;$#@60;,; 8 } 9 else 10 $m="$#@62;$#@62; ,; 11 if(!ereg("n$", $message)) 12 $message .= "$#@60;br$#@62;"; 13 $message=nl2br($message); 14 echo "$#@60;font color=#999999$#@62;${m}${message}...
smtp的基础 基于tcp/ip的因特网协议一般的命令格式都是通过请求/ 应答方式实现的,采用的都是文本信息,所以处理起来要容易一些。smtp是简单邮件传输协议的简称,它可以实现客户端向服务器发送邮件的功能。 所以下面所讲的命令是指客户端向服务器发出请求指令,而响应则是指服务器返回给客户端的信息。 smtp分为命令头和信息体两部分。命令头主要完成客户端与服务器的连接,验证等。整个过程由多条命令组成。每个命令发到服务器后,由服务器给出响应信息,一般为3 位数字的响应码和响应文本。不同的服务器返回的响应码是遵守协议的,但是响应正文本则不必。每个命令及响应的最后都有一个回车符,这样使用fputs()和fgets()就可以进行命令与响应的处理了。smtp的命令及响应信息都是单行的。信息体则是邮件的正文部分,最后的结束行应以单独的"."作为结束行。 客户端一些常用的smtp指令为: helo h...
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器