在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
开源软件名称:workerman开源软件地址:https://gitee.com/walkor/workerman开源软件介绍:WorkermanWhat is itWorkerman is an asynchronous event-driven PHP framework with high performance to build fast and scalable network applications.Workerman supports HTTP, Websocket, SSL and other custom protocols.Workerman supports event extension. RequiresPHP 5.3 or Higher Installationcomposer require workerman/workerman Basic UsageA websocket server<?phpuse Workerman\Worker;require_once __DIR__ . '/vendor/autoload.php';// Create a Websocket server$ws_worker = new Worker('websocket://0.0.0.0:2346');// Emitted when new connection come$ws_worker->onConnect = function ($connection) { echo "New connection\n";};// Emitted when data received$ws_worker->onMessage = function ($connection, $data) { // Send hello $data $connection->send('Hello ' . $data);};// Emitted when connection closed$ws_worker->onClose = function ($connection) { echo "Connection closed\n";};// Run workerWorker::runAll(); An http serveruse Workerman\Worker;require_once __DIR__ . '/vendor/autoload.php';// #### http worker ####$http_worker = new Worker('http://0.0.0.0:2345');// 4 processes$http_worker->count = 4;// Emitted when data received$http_worker->onMessage = function ($connection, $request) { //$request->get(); //$request->post(); //$request->header(); //$request->cookie(); //$request->session(); //$request->uri(); //$request->path(); //$request->method(); // Send data to client $connection->send("Hello World");};// Run all workersWorker::runAll(); A tcp serveruse Workerman\Worker;require_once __DIR__ . '/vendor/autoload.php';// #### create socket and listen 1234 port ####$tcp_worker = new Worker('tcp://0.0.0.0:1234');// 4 processes$tcp_worker->count = 4;// Emitted when new connection come$tcp_worker->onConnect = function ($connection) { echo "New Connection\n";};// Emitted when data received$tcp_worker->onMessage = function ($connection, $data) { // Send data to client $connection->send("Hello $data \n");};// Emitted when connection is closed$tcp_worker->onClose = function ($connection) { echo "Connection closed\n";};Worker::runAll(); Enable SSL<?phpuse Workerman\Worker;require_once __DIR__ . '/vendor/autoload.php';// SSL context.$context = array( 'ssl' => array( 'local_cert' => '/your/path/of/server.pem', 'local_pk' => '/your/path/of/server.key', 'verify_peer' => false, ));// Create a Websocket server with ssl context.$ws_worker = new Worker('websocket://0.0.0.0:2346', $context);// Enable SSL. WebSocket+SSL means that Secure WebSocket (wss://). // The similar approaches for Https etc.$ws_worker->transport = 'ssl';$ws_worker->onMessage = function ($connection, $data) { // Send hello $data $connection->send('Hello ' . $data);};Worker::runAll(); Custom protocolProtocols/MyTextProtocol.php namespace Protocols;/** * User defined protocol * Format Text+"\n" */class MyTextProtocol{ public static function input($recv_buffer) { // Find the position of the first occurrence of "\n" $pos = strpos($recv_buffer, "\n"); // Not a complete package. Return 0 because the length of package can not be calculated if ($pos === false) { return 0; } // Return length of the package return $pos+1; } public static function decode($recv_buffer) { return trim($recv_buffer); } public static function encode($data) { return $data . "\n"; }} use Workerman\Worker;require_once __DIR__ . '/vendor/autoload.php';// #### MyTextProtocol worker ####$text_worker = new Worker('MyTextProtocol://0.0.0.0:5678');$text_worker->onConnect = function ($connection) { echo "New connection\n";};$text_worker->onMessage = function ($connection, $data) { // Send data to client $connection->send("Hello world\n");};$text_worker->onClose = function ($connection) { echo "Connection closed\n";};// Run all workersWorker::runAll(); Timeruse Workerman\Worker;use Workerman\Timer;require_once __DIR__ . '/vendor/autoload.php';$task = new Worker();$task->onWorkerStart = function ($task) { // 2.5 seconds $time_interval = 2.5; $timer_id = Timer::add($time_interval, function () { echo "Timer run\n"; });};// Run all workersWorker::runAll(); AsyncTcpConnection (tcp/ws/text/frame etc...)use Workerman\Worker;use Workerman\Connection\AsyncTcpConnection;require_once __DIR__ . '/vendor/autoload.php';$worker = new Worker();$worker->onWorkerStart = function () { // Websocket protocol for client. $ws_connection = new AsyncTcpConnection('ws://echo.websocket.org:80'); $ws_connection->onConnect = function ($connection) { $connection->send('Hello'); }; $ws_connection->onMessage = function ($connection, $data) { echo "Recv: $data\n"; }; $ws_connection->onError = function ($connection, $code, $msg) { echo "Error: $msg\n"; }; $ws_connection->onClose = function ($connection) { echo "Connection closed\n"; }; $ws_connection->connect();};Worker::runAll(); Available commands
Documentation中文文档: https://www.workerman.net/doc/workerman Documentation:https://github.com/walkor/workerman-manual Benchmarkshttps://www.techempower.com/benchmarks/#section=data-r20&hw=ph&test=db&l=yyku7z-e7&a=2 SponsorsDonateOther links with workermanwebman LICENSEWorkerman is released under the MIT license. |
请发表评论