TSF - 基于协程和swoole驱动的高性能PHP框架(tsf桌面)

网友投稿 681 2022-10-13

TSF - 基于协程和swoole驱动的高性能PHP框架(tsf桌面)

TSF - 基于协程和swoole驱动的高性能PHP框架(tsf桌面)

项目目前是存档状态,感谢您对腾讯开源项目的关注!您可以继续fork后更新迭代,感谢理解和支持;如果您有其他疑问,建议请发送邮件:tencentopen@tencent.com 与我们联系

Tencent Server Framework

Overview

Tencent Server Framework is a coroutine and Swoole based server framework for fast server deployment which developed by Tencent engineers.

Features

PHP Based. Compared with C++, the framework is more efficient in developing and programing.based on Swoole extension. powerful async IO, timers and other infrastructure capacity can be used in this framework.support PHP coroutine. Synchronous programing is possible using the coroutine schedule system, and can lead to the similar server capability with that of server deveoped in an asynchronous way.support server monitor and provide interface to add more rules

Requirements

php5.5+Swoole1.7.18+linux,OS X

Installation

PHP installSwoole extension install

Introduction

Tencent Server Framework can help you to start your server quickly,you just need to set a few settings

Server config

vim server.ini[server];server type:tcp,udp,httptype = http; portlisten[] = 12312; entrance fileroot = '/data/web_deployment/serv/test/index.php';php start pathphp = '/usr/local/php/bin/php'[setting]; worker process numworker_num = 16; task process numtask_worker_num = 0; dispatch modedispatch_mode = 2; daemonizedaemonize = 1; system loglog_file = '/data/log/test.log'

How to start your server

cd /root/tsf/bin/php swoole testHttpServ start

Support Cmds: start,stop,reload,restart,status,shutdown,startall,list

How to use TCP/UDP/HTTP Client

we support different network protocols: 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://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); }

How to use Muticall

Beside that,we also support Muticall:you can use Muticall to send TCP,UDP packets at the sametimewhen all the requests come back,return to interrupt

$res = (yield $this->muticallTest()); public function muticallTest(){ $calls=new Swoole\Client\Multi(); $firstReq=new Swoole\Client\TCP($ip, $port, $data, $timeout); $secondReq=new Swoole\Client\UDP($ip, $port, $data, $timeout); $thirdReq= new Swoole\Client\HTTP("http://qq.com"); $calls ->request($firstReq,'first'); //first request $calls ->request($secondReq,'second'); //second request $calls ->request($thirdReq,'third'); //third request yield $calls; } var_dump($res)

Concect to mysql async

$sql = new Swoole\Client\MYSQL(array('host' => '127.0.0.1', 'port' => 3345, 'user' => 'root', 'password' => 'root', 'database' => 'test', 'charset' => 'utf-8',)); $ret = (yield $sql ->query('show tables')); var_dump($ret); $ret = (yield $sql ->query('desc test')); var_dump($ret);

Router

We support individuation route rulesnow we realize some universal route rules and restful rulesbesides that, we also support default GET parameter

URL METHOD CONTROLLER ACTION http://127.0.0.1:80/Test?h=1 ANY ==> TestController/ActionIndex http://127.0.0.1:80/Test/send?h=1 ANY ==> TestController/ActionSend Restful http://127.0.0.1:80/rest GET ==> TestController/ActionList http://127.0.0.1:80/rest/Test/22 GET ==> TestController/ActionView Get['id']=22 http://127.0.0.1:80/rest/Test POST ==> TestController/ActionCreate http://127.0.0.1:80/rest/Test/22 PUT ==> TestController/ActionUpdate Get['id']=22 http://127.0.0.1:80/rest/Test/22 DELETE ==> TestController/ActionDelete Get['id']=22 http://127.0.0.1:80/rest/Test/send/1/li GET ==> TestController/ActionSend Get['cid']=1 Get['name']=li

Performance

Contribution

Your contribution to TSF development is very welcome!

You may contribute in the following ways:

Repost issues and feedbackSubmit fixes, features via Pull RequestWrite/polish documentation

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Beanbun 是用 PHP 编写的多进程网络爬虫框架(beans怎么读)
下一篇:Centos 7.6下安装Grafana 6.6.2
相关文章

 发表评论

暂时没有评论,来抢沙发吧~