<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></title> 
<link>http://www.jackxiang.com/index.php</link> 
<description><![CDATA[赢在IT，Playin' with IT,Focus on Killer Application,Marketing Meets Technology.]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></copyright>
<item>
<link>http://www.jackxiang.com/post//</link>
<title><![CDATA[PHP 协程方案 tsf]]></title> 
<author>jack &lt;xdy108@126.com&gt;</author>
<category><![CDATA[Php/Js/Shell/Go]]></category>
<pubDate>Thu, 09 Jul 2015 09:38:23 +0000</pubDate> 
<guid>http://www.jackxiang.com/post//</guid> 
<description>
<![CDATA[ 
	背景：rango兄弟搞一个swoole，这兄弟尼玛名字取得太大 Tencent Sever Framework。 不怕腾讯告你啊，tsf用了PHP的生成器语法实现了协程，这是最大的创新。QQ 现在 部分后台协议 是用这个搞的公众号。也有人用swoole做日志服务器。<br/>顺带介绍下swoole：采用swoole+redis，基于swoole扩展，根据内部的需求，封装了一套可扩展、高性的PHP server，已应用于多个业务模块，提供高并发的kv数据查询及业务数据的在线计算，每天亿级的PV量，某熊公司有一套分布式压测系统，他们对实际项目做过100亿次的测试，无问题，正在用，我没用，哈哈。<br/><br/>开始扯：<br/>协程也有一个小小的缺点：做并发不如异步IO方便。除非你再启动一个协程。做comet还是golang比较舒服，swoole的comet也非常方便。<br/>golang+redis (数字公司在用,跟开发普通后端server一样，不过golang是协程机制，hold连接很简单,单机一般有100w，经过优化后连接能到200w).......swoole这块我就不想提了，毕竟要相信PHP是最好的语言没有之一<br/>go吸引人的是顺应了目前主流语言的编程风格，进行了语法的一些改进，吸收了erlang的协程机制，另外与c的无缝混编。<br/>仅管看go很NB的样子，但我还是要说PHP才是最好的语言，没有之一，因为swoole也能实现了。<br/>总之，PHP是世界上最好的语言<br/>————————————————————————————————————————————————————————————————————————<br/>PHP 协程方案 tsf<br/><br/>tsf （Tencent Server Framework） 是腾讯公司推出的 PHP 协程方案，基于 Swoole+PHP Generator 实现的 Coroutine。Tencent Server Framework 是快速服务器部署框架，PHP 现在可以像 Golang 一样用协程实现高并发服务器，同时支持同步阻塞，异步非阻塞回调，协程这 3 种 IO 模型。<br/><br/>主要特性：<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;基于 PHP，相比 C++ 开发更高效<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;基于 Swoole 扩展，强大的异步 IO<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;支持 PHP coroutine<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;支持服务器监控器和提供接口<br/><br/>要求：<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;php5.5+<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;Swoole1.7.18+<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;linux,OS X<br/><br/>服务器配置：<br/><br/>vim server.ini<br/><br/>[server]<br/>;server type:tcp，udp，http<br/>type = http<br/>; port<br/>listen[] = 12312<br/>; entrance file<br/>root = &#039;/data/web_deployment/serv/test/index.php&#039;<br/>;php start path<br/>php = &#039;/usr/local/php/bin/php&#039;<br/><br/>[setting]<br/>; worker process num<br/>worker_num = 16<br/>; task process num<br/>task_worker_num = 0<br/>; dispatch mode<br/>dispatch_mode = 2<br/>; daemonize<br/>daemonize = 1<br/>; system log<br/>log_file = &#039;/data/log/test.log&#039;<br/><br/>启动服务器：<br/><br/>cd /root/tsf/bin/<br/>php swoole testHttpServ start<br/><br/>使用 TCP/UDP/HTTP 客户端：<br/><br/> <br/><br/>$tcpReturn=(yield $this-&gt;tcpTest());<br/>&nbsp;&nbsp;$udpReturn=(yield $this-&gt;udpTest());<br/>&nbsp;&nbsp;$httpReturn=(yield $this-&gt;httpTest());<br/>&nbsp;&nbsp;public function tcpTest()&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;$ip = &#039;127.0.0.1&#039;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;$port = &#039;9905&#039;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;$data = &#039;test&#039;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;$timeout = 0.5; //second<br/>&nbsp;&nbsp;&nbsp;&nbsp;yield new Swoole&#92;Client&#92;TCP($ip, $port, $data, $timeout);<br/>&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;public function udpTest()&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;$ip = &#039;127.0.0.1&#039;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;$port = &#039;9905&#039;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;$data = &#039;test&#039;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;$timeout = 0.5; //second<br/>&nbsp;&nbsp;&nbsp;&nbsp;yield new Swoole&#92;Client&#92;UDP($ip, $port, $data, $timeout);<br/>&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;public function httpTest()&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;$url=&#039;http://www.qq.com&#039;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;$httpRequest= new Swoole&#92;Client&#92;HTTP($url);<br/>&nbsp;&nbsp;&nbsp;&nbsp;$data=&#039;testdata&#039;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;$header = array(<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#039;Content-Length&#039; =&gt; 12345,<br/>&nbsp;&nbsp;&nbsp;&nbsp;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;yield $httpRequest-&gt;get($url); //yield $httpRequest-&gt;post($path, $data, $header);<br/>&nbsp;&nbsp;&#125;<br/><br/>来自：http://m.oschina.net/p/tsf?from=timeline&amp;isappinstalled=0
]]>
</description>
</item><item>
<link>http://www.jackxiang.com/post//#blogcomment</link>
<title><![CDATA[[评论] PHP 协程方案 tsf]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>http://www.jackxiang.com/post//#blogcomment</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>