Swoole擴(kuò)展
接著第一章的源碼安裝PHP上擴(kuò)展swoole-4.4.16
① 下載并解壓swoole [下載連接:](wget https://github.com/swoole/swoole-src/archive/v4.4.16.tar.gz)
[root@anonymous package]# wget https://github.com/swoole/swoole-src/archive/v4.4.16.tar.gz

解壓swoole.jpg
② 進(jìn)入解壓后的 swoole-src-4.4.16 目錄 利用 phpize 生成 configure 文件
[root@anonymous swoole-src-4.4.16]# pwd
/package/swoole-src-4.4.16
[root@anonymous swoole-src-4.4.16]# ls
clear.sh make.sh remake_library.sh swoole_client_coro.cc swoole_http_client_coro.cc swoole_mysql_proto.cc swoole_socket_coro.cc
CMakeLists.txt mascot.png src swoole_coroutine.cc swoole_http_client.h swoole_mysql_proto.h swoole_table.cc
code_stats.sh package.xml SUPPORTED.md swoole_coroutine.h swoole_http.h swoole_process.cc swoole_timer.cc
config.m4 php_swoole_cxx.cc swoole_async_coro.cc swoole_coroutine_scheduler.cc swoole_http_request.cc swoole_process_pool.cc swoole_websocket_server.cc
CREDITS php_swoole_cxx.h swoole_atomic.cc swoole_coroutine_system.cc swoole_http_response.cc swoole_redis_coro.cc tests
examples php_swoole.h swoole_buffer.c swoole_coroutine_system.h swoole_http_server.cc swoole_redis_server.cc thirdparty
gdbinit php_swoole_library.h swoole.cc swoole_event.cc swoole_http_server_coro.cc swoole_runtime.cc tools
include README-CN.md swoole_channel_coro.cc swoole_http2_client_coro.cc swoole_lock.cc swoole_server.cc travis
LICENSE README.md swoole_client.cc swoole_http2_server.cc swoole_mysql_coro.cc swoole_server_port.cc
[root@anonymous swoole-src-4.4.16]# phpize
Configuring for:
PHP Api Version: 20190902
Zend Module Api No: 20190902
Zend Extension Api No: 320190902
[root@anonymous swoole-src-4.4.16]# ls
autom4te.cache examples php_swoole_library.h swoole.cc swoole_http2_client_coro.cc swoole_mysql_coro.cc swoole_socket_coro.cc
build gdbinit README-CN.md swoole_channel_coro.cc swoole_http2_server.cc swoole_mysql_proto.cc swoole_table.cc
clear.sh include README.md swoole_client.cc swoole_http_client_coro.cc swoole_mysql_proto.h swoole_timer.cc
CMakeLists.txt LICENSE remake_library.sh swoole_client_coro.cc swoole_http_client.h swoole_process.cc swoole_websocket_server.cc
code_stats.sh make.sh run-tests.php swoole_coroutine.cc swoole_http.h swoole_process_pool.cc tests
config.h.in mascot.png src swoole_coroutine.h swoole_http_request.cc swoole_redis_coro.cc thirdparty
config.m4 package.xml SUPPORTED.md swoole_coroutine_scheduler.cc swoole_http_response.cc swoole_redis_server.cc tools
configure php_swoole_cxx.cc swoole_async_coro.cc swoole_coroutine_system.cc swoole_http_server.cc swoole_runtime.cc travis
configure.ac php_swoole_cxx.h swoole_atomic.cc swoole_coroutine_system.h swoole_http_server_coro.cc swoole_server.cc
CREDITS php_swoole.h swoole_buffer.c swoole_event.cc swoole_lock.cc swoole_server_port.cc
[root@anonymous swoole-src-4.4.16]#
[root@anonymous swoole-src-4.4.16]# ./configure --with-php-config=/usr/study/ext/php/bin/php-config
[root@anonymous swoole-src-4.4.16]# make && make install

swooleSo.jpg
可以看到上圖 swoole.so 已經(jīng)生成了 需要到 php.ini 里面 添加 extension=swoole
[root@anonymous lib]# pwd
/usr/study/ext/php/lib
[root@anonymous lib]# vim php.ini

ini添加.jpg
③ 查看 php --ri swoole 是否開啟狀態(tài)

擴(kuò)展完畢.jpg
④ 測試是否能用
在 /package/swoole-src-4.4.16/examples/server 目錄下執(zhí)行 echo.php
以下是 echo.php 文件中的內(nèi)容, 具體請?jiān)敿?xì)看swoole官方手冊
<?php
$serv = new swoole_server("0.0.0.0", 9501);
//$serv->on('connect', function ($serv, $fd, $reactor_id){
// echo "[#".posix_getpid()."]\tClient@[$fd:$reactor_id]: Connect.\n";
//});
$serv->set(array(
'worker_num' => 1,
));
$serv->on('receive', function (swoole_server $serv, $fd, $reactor_id, $data) {
echo "[#".$serv->worker_id."]\tClient[$fd] receive data: $data\n";
if ($serv->send($fd, "hello {$data}\n") == false)
{
echo "error\n";
}
});
//$serv->on('close', function ($serv, $fd, $reactor_id) {
// echo "[#".posix_getpid()."]\tClient@[$fd:$reactor_id]: Close.\n";
//});
$serv->start();

執(zhí)行echo文件.jpg
[root@anonymous ~]# netstat -ltpn | grep 9501
tcp 0 0 0.0.0.0:9501 0.0.0.0:* LISTEN 15092/php
[root@anonymous ~]#