Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings
/ tsf Public
forked from Tencent/tsf

coroutine and Swoole based php server framework in tencent

Notifications You must be signed in to change notification settings

alexlis/tsf

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

97 Commits

Repository files navigation

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

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,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'

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://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);
 }

How to use Muticall

  • Beside that,we also support Muticall:
  • you can use Muticall to send TCP,UDP packets at the sametime
  • when 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://www.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 rules
  • now we realize some universal route rules and restful rules
  • besides 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:

License

Apache License Version 2.0 see http://www.apache.org/licenses/LICENSE-2.0.html

About

coroutine and Swoole based php server framework in tencent

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • PHP 100.0%

AltStyle によって変換されたページ (->オリジナル) /