起航学习网

- 让每个人都能学到最前沿新知识、新技能!
起航学习网
当前位置: 起航学习网 > 短期培训 > 编程语言 > Swoole 教程有没有免费的

Swoole 教程有没有免费的

时间:2019-01-10 11:49:28来源:编程网 作者:IT培训网 已有: 名学员访问该课程

  快捷搜索:教程SwooleSwoole 教程

前言:swoole目前已被多家移动互联网、物联网、网络游戏、手机游戏企业使用,替代了C++、Java等复杂编程语言来实现网络服务器程序。 使用PHP+Swoole,开发效率可以大大提升。

Swoole是什么,Swoole算是服务端语言吗,服务端语言有哪些呢,如何学习Swoole这种服务端编程语言呢,零基础小白看Swoole教程能行吗,Swoole教程知识有哪些呢,Swoole教程是否容易学习呢?下面我们就一起走进Swoole教程的世界里!

Swoole 简介

swoole是运行在PHP下的一个extesion扩展,实际上与普通的扩展不同。普通的扩展只是提供一个库函数。而swoole扩展在运行后会接管PHP的控制权,进入事件循环。当IO事件发生后,swoole会自动回调指定的PHP函数。

PHP的异步、并行、高性能网络通信引擎,使用纯C语言编写,提供了PHP语言的异步多线程服务器,异步TCP/UDP网络客户端,异步MySQL,异步Redis,数据库连接池,AsyncTask,消息队列,毫秒定时器,异步文件读写,异步DNS查询。 Swoole内置了Http/WebSocket服务器端/客户端、Http2.0服务器端。

Swoole可以广泛应用于互联网、移动通信、企业软件、网络游戏、物联网、车联网、智能家庭等领域。 使用PHP+Swoole作为网络通信框架,可以使企业IT研发团队的效率大大提升,更加专注于开发创新产品。

Swoole底层内置了异步非阻塞、多线程的网络IO服务器。PHP程序员仅需处理事件回调即可,无需关心底层。与Nginx/Tornado/Node.js等全异步的框架不同,Swoole既支持全异步,也支持同步。

Swoole是开源免费的自由软件,授权协议是Apache2.0。企业和个人开发者均可免费使用Swoole的代码,并且在Swoole之上所作的修改可用于商业产品,无需开源(注:必须保留原作者的版权声明)。

多端阅读《Swoole 教程》:

Swoole手册简介:

swoole使用手册,入门教程,Swoole是PHP的异步、并行、高性能网络通信引擎,使用纯C语言编写,提供了PHP语言的异步多线程服务器,异步TCP/UDP网络客户端,异步MySQL,异步Redis,数据库连接池,AsyncTask,消息队列,毫秒定时器,异步文件读写,异步DNS查询。 Swoole内置了Http/WebSocket服务器端/客户端、Http2.0服务器端。 Swoole可以广泛应用于互联网、移动通信、企业软件、云计算、网络游戏、物联网(IOT)、车联网、智能家居等领域。 使用PHP+

Swoole手册说明:

swoole是什么?

Swoole是一个PHP的C扩展,可用来开发PHP的高性能高并发TCP/UDP Server。Swoole的网络IO部分基于epoll/kqueue事件循环,是全异步非阻塞的。 业务逻辑部分使用多进程同步阻塞方式来运行。这样既保证了Server能够应对高并发和大量TCP连接。又保证业务代码仍然可以简单的编写。

Swoole1.6.2之后增加了异步支持,应用程序也可以像node.js一样写异步回调。

Swoole与Node.js相比更强大,支持同步/异步、多进程并行,Swoole提供了进程生命周期管理、内存保护机制,开发者无需考虑底层细节,专注于业务逻辑和功能的开发。

Swoole底层内置了异步非阻塞、多线程的网络IO服务器。PHP程序员仅需处理事件回调即可,无需关心底层。与Nginx/Tornado/Node.js等全异步的框架不同,Swoole既支持全异步,也支持同步。

Swoole从2.0版本开始支持了内置协程,可以使用完全同步的代码实现异步程序。PHP代码无需额外增加任何关键词,底层自动进行协程调度,实现异步。

Swoole是开源免费的自由软件,授权协议是Apache2.0。企业和开发者均可免费使用Swoole的代码,并且在Swoole之上所作的修改无需开源。

Swoole优势

纯C编写性能极强

简单易用开发效率高

事件驱动异步非阻塞

并发百万TCP连接

TCP/UDP/UnixSock

服务器端/客户端

全异步/半异步半同步

支持多进程/多线程

CPU亲和性/守护进程

支持IPv4/IPv6网络

Swoole HttpServer实现示例:

$serv = new Swoole\Http\Server("127.0.0.1", 9502);

$serv->on('Request', function($request, $response) {

var_dump($request->get);

var_dump($request->post);

var_dump($request->cookie);

var_dump($request->files);

var_dump($request->header);

var_dump($request->server);

$response->cookie("User", "Swoole");

$response->header("X-Server", "Swoole");

$response->end("

Hello Swoole!

");

});

$serv->start();

Swoole WebSocket Server实现示例:

$serv = new Swoole\Websocket\Server("127.0.0.1", 9502);

$serv->on('Open', function($server, $req) {

echo "connection open: ".$req->fd;

});

$serv->on('Message', function($server, $frame) {

echo "message: ".$frame->data;

$server->push($frame->fd, json_encode(["hello", "world"]));

});

$serv->on('Close', function($server, $fd) {

echo "connection close: ".$fd;

});

$serv->start();

Swoole TCP Server实现示例:

$serv = new Swoole\Server("127.0.0.1", 9501);

$serv->set(array(

'worker_num' => 8,   //工作进程数量

'daemonize' => true, //是否作为守护进程

));

$serv->on('connect', function ($serv, $fd){

echo "Client:Connect.\n";

});

$serv->on('receive', function ($serv, $fd, $from_id, $data) {

$serv->send($fd, 'Swoole: '.$data);

$serv->close($fd);

});

$serv->on('close', function ($serv, $fd) {

echo "Client: Close.\n";

});

$serv->start();

Swoole TCP Client实现示例:

$client = new Swoole\Client(SWOOLE_SOCK_TCP, SWOOLE_SOCK_ASYNC);

//设置事件回调函数

$client->on("connect", function($cli) {

$cli->send("hello world\n");

});

$client->on("receive", function($cli, $data){

echo "Received: ".$data."\n";

});

$client->on("error", function($cli){

echo "Connect failed\n";

});

$client->on("close", function($cli){

echo "Connection close\n";

});

//发起网络连接

$client->connect('127.0.0.1', 9501, 0.5);

Swoole 异步MySQL实现示例

$db = new Swoole\MySQL;

$server = array(

'host' => '127.0.0.1',

'user' => 'test',

'password' => 'test',

'database' => 'test',

);

$db->connect($server, function ($db, $result) {

$db->query("show tables", function (Swoole\MySQL $db, $result) {

if ($result === false) {

var_dump($db->error, $db->errno);

} elseif ($result === true) {

var_dump($db->affected_rows, $db->insert_id);

} else {

var_dump($result);

$db->close();

}

});

});

Swoole 异步Redis/异步Http客户端实现示例

$redis = new Swoole\Redis;

$redis->connect('127.0.0.1', 6379, function ($redis, $result) {

$redis->set('test_key', 'value', function ($redis, $result) {

$redis->get('test_key', function ($redis, $result) {

var_dump($result);

});

});

});

$cli = new Swoole\Http\Client('127.0.0.1', 80);

$cli->setHeaders(array('User-Agent' => 'swoole-http-client'));

$cli->setCookies(array('test' => 'value'));

$cli->post('/dump.php', array("test" => 'abc'), function ($cli) {

var_dump($cli->body);

$cli->get('/index.php', function ($cli) {

var_dump($cli->cookies);

var_dump($cli->headers);

});

});

Swoole Async-IO实现示例

$fp = stream_socket_client("tcp://127.0.0.1:80", $code, $msg, 3);

$http_request = "GET /index.html HTTP/1.1\r\n\r\n";

fwrite($fp, $http_request);

Swoole\Event::add($fp, function($fp){

echo fread($fp, 8192);

swoole_event_del($fp);

fclose($fp);

});

Swoole\Timer::after(2000, function() {

echo "2000ms timeout\n";

});

Swoole\Timer::tick(1000, function() {

echo "1000ms interval\n";

});

Swoole 异步任务实现示例:

$serv = new Swoole\Server("127.0.0.1", 9502);

$serv->set(array('task_worker_num' => 4));

$serv->on('Receive', function($serv, $fd, $from_id, $data) {

$task_id = $serv->task("Async");

echo "Dispath AsyncTask: id=$task_id\n";

});

$serv->on('Task', function ($serv, $task_id, $from_id, $data) {

echo "New AsyncTask[id=$task_id]".PHP_EOL;

$serv->finish("$data -> OK");

});

$serv->on('Finish', function ($serv, $task_id, $data) {

echo "AsyncTask[$task_id] Finish: $data".PHP_EOL;

});

$serv->start();

Swoole案例

swoole目前已被多家移动互联网、物联网、网络游戏、手机游戏企业使用,替代了C++、Java等复杂编程语言来实现网络服务器程序。 使用PHP+Swoole,开发效率可以大大提升。官方提供了基于swoole扩展开发的PHP网络框架, 支持Http,FastCGI,WebSocket,FTP,SMTP,RPC等网络协议 swoole在美国,英国,法国,印度等国家都有用户分布,在国内的 腾讯、百度、阿里巴巴、YY语音等多家知名互联网公司均有使用。

版权说明:本教程内容来源:Swoole开源社区

Swoole更新记录:

Swoole 编译安装 05-31 10:32

Swoole Coroutine协程支持 01-03 18:19

Swoole 2.0 正式版发布,协程特性支持 PHP 7 01-03 16:05

Swoole Task实例 12-12 15:26

Swoole 简介 12-12 15:25

Swoole HttpServer实例 12-12 15:12

Swoole Redis Server实例 12-12 15:09

Swoole MySQL实例 12-12 15:07

Swoole AsyncIO实例 12-12 15:06

Swoole WebSocket实例 12-12 14:56

文章出自:http://qh.itpxw.cn/peixun/software/201946165.html

文章标题:Swoole 教程有没有免费的



免责声明:本站文章均由入驻起航学习网的会员所发或者网络转载,所述观点仅代表作者本人,不代表起航学习网立场。如有侵权或者其他问题,请联系举报,必删。侵权投诉

你也许会喜欢如下的文章?
(责任编辑:IT培训网)
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
培训学校
IT培训网 访问该机构站点 报名留言 加为好友 用户等级:注册会员 用户级别:10 机构名称:IT培训网 联 系 人:罗老师 联系电话:13783581536 联系手机:13783581536 在线客服:起航学习网客服 在 线 QQ:起航学习网客服 电子邮件: 网站域名:http://www.itpxw.cn 注册时间:2016-07-18 11:07 最后登录:2024-02-20 13:02
推荐内容