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