Home page:http://www.workerman.net
Documentation:http://doc3.workerman.net
Workerman is a library for event-driven programming in PHP. It has a huge number of features. Each worker is able to handle thousands of connections.
test.php
require_once './Workerman/Autoloader.php'; use Workerman\Worker; // #### create socket and listen 1234 port #### $tcp_worker = new Worker("tcp://0.0.0.0:1234"); //create 4 hello_worker processes $tcp_worker->count = 4; // when client send data to 1234 port $tcp_worker->onMessage = function($connection, $data) { // send data to client $connection->send("hello $data\n"); }; Worker::runAll();
test.php
require_once './Workerman/Autoloader.php'; use Workerman\Worker; // #### http worker #### $http_worker = new Worker("http://0.0.0.0:2345"); $http_worker->count = 4; $http_worker->onMessage = function($connection, $data) { // send data to client $connection->send("hello world \n"); }; // run all workers Worker::runAll();
test.php
require_once './Workerman/Autoloader.php'; use Workerman\Worker // #### websocket worker #### $ws_worker = new Worker("websocket://0.0.0.0:5678"); $ws_worker->onMessage = function($connection, $data) { // send data to client $connection->send("hello world \n"); }; // run all workers Worker::runAll();
Protocols/MyTextProtocol.php
/** * 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"; } }
test.php
require_once './Workerman/Autoloader.php'; use Workerman\Worker // #### MyTextProtocol worker #### $text_worker = new Worker("MyTextProtocol://0.0.0.0:5678"); $text_worker->onMessage = function($connection, $data) { // send data to client $connection->send("hello world \n"); }; // run all workers Worker::runAll();
test.php
require_once './Workerman/Autoloader.php'; use \Workerman\WebServer; // WebServer $web = new WebServer("http://0.0.0.0:8686"); $web->count = 2; $web->addRoot('www.your_domain.com', __DIR__.'/Web'); // run all workers Worker::runAll();
test.php
require_once './Workerman/Autoloader.php'; use Workerman\Worker; use Workerman\Lib\Timer; $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 workers Worker::runAll();
run width
php test.php start
php test.php start
php test.php start -d
workerman start
php test.php status
workerman satus
php test.php stop
php test.php restart
php test.php reload
Live demo
Source code
workerman todpole
Live demo
Source code
BrowserQuest width workerman
Live demo
Source code
web vmstat
Live demo camera page
Live demo receive page
Source code
web vmstat
Live demo
Source code
workerman-chat
Live demo
Source code
workerman-statistics
Live demo
Source code
workerman-statistics
Source code
workerman-thriftRpc
Live demo send page
Live demo receive page
Source code
web-msg-sender