# Workerman
[![Gitter](https://badges.gitter.im/walkor/Workerman.svg)](https://gitter.im/walkor/Workerman?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=body_badge)
## What is it
Workerman is an asynchronous event driven PHP framework with high performance for easily building fast, scalable network applications. Supports HTTP, Websocket, SSL and other custom protocols. Supports libevent, [HHVM](https://github.com/facebook/hhvm) , [ReactPHP](https://github.com/reactphp/react).
## Requires
PHP 5.3 or Higher
A POSIX compatible operating system (Linux, OSX, BSD)
POSIX and PCNTL extensions for PHP
## Installation
```
composer require workerman/workerman
```
## Basic Usage
### A websocket server
```php
<?php
require_once __DIR__ . '/vendor/autoload.php';
use Workerman\Worker;
// Create a Websocket server
$ws_worker = new Worker("websocket://0.0.0.0:2346");
// 4 processes
$ws_worker->count = 4;
// 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 worker
Worker::runAll();
```
### An http server
```php
require_once __DIR__ . '/vendor/autoload.php';
use Workerman\Worker;
// #### 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, $data)
{
// $_GET, $_POST, $_COOKIE, $_SESSION, $_SERVER, $_FILES are available
var_dump($_GET, $_POST, $_COOKIE, $_SESSION, $_SERVER, $_FILES);
// send data to client
$connection->send("hello world \n");
};
// run all workers
Worker::runAll();
```
### A WebServer
```php
require_once __DIR__ . '/vendor/autoload.php';
use Workerman\WebServer;
use Workerman\Worker;
// WebServer
$web = new WebServer("http://0.0.0.0:80");
// 4 processes
$web->count = 4;
// Set the root of domains
$web->addRoot('www.your_domain.com', '/your/path/Web');
$web->addRoot('www.another_domain.com', '/another/path/Web');
// run all workers
Worker::runAll();
```
### A tcp server
```php
require_once __DIR__ . '/vendor/autoload.php';
use Workerman\Worker;
// #### 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 new connection come
$tcp_worker->onClose = function($connection)
{
echo "Connection closed\n";
};
Worker::runAll();
```
### Enable SSL.
```php
<?php
require_once __DIR__ . '/vendor/autoload.php';
use Workerman\Worker;
// SSL context.
$context = array(
'ssl' => array(
'local_cert' => '/your/path/of/server.pem',
'local_pk' => '/your/path/of/server.key',
)
);
// 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 protocol
Protocols/MyTextProtocol.php
```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";
}
}
```
```php
require_once __DIR__ . '/vendor/autoload.php';
use Workerman\Worker;
// #### 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 workers
Worker::runAll();
```
### Timer
```php
require_once __DIR__ . '/vendor/autoload.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();
```
### AsyncTcpConnection (tcp/ws/text/frame etc...)
```php
require_once __DIR__ . '/vendor/autoload.php';
use Workerman\Worker;
use Workerman\Connection\AsyncTcpConnection;
$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();
```
### Async Mysql of ReactPHP
```
composer require react/mysql
```
```php
<?php
require_once __DIR__ . '/vendor/autoload.php';
use Workerman\Worker;
$worker = new Worker('tcp://0.0.0.0:6161');
$worker->onWorkerStart = function() {
global $mysql;
$loop = Worker::getEventLoop();
$mysql = new React\MySQL\Connection($loop, array(
'host' => '127.0.0.1',
'dbname' => 'dbname',
'user' => 'user',
'passwd' => 'passwd',
));
$mysql->on('error', function($e){
echo $e;
});
$mysql->connect(function ($e) {
if($e) {
echo $e;
} else {
echo "connect success\n";
}
});
};
$worker->onMessage = function($connection, $data) {
global $mysql;
$mysql->query('show databases' /*trim($data)*/, function ($command, $mysql) use ($connection) {
if ($command->hasError()) {
$error = $command->getError();
} else {
$results = $command->resultRows;
$fields = $command->resultFields;
$connection->send(json_encode($results));
}
});
};
Worker::runAll();
```
### Async Redis of ReactPHP
```
composer require clue/redis-react
```
```php
<?php
require_once __DIR__ . '/vendor/autoload.php';
use Clue\React\Redis\Factory;
use Clue\React\Redis\Client;
use Workerman\Worker;
$worker = new Worker('tcp://0.0.0.0:6161');
$worker->onWorkerStart = function() {
global $factory;
$loop = Worker::getEventLoop();
$factory = new Factory($loop);
};
$worker->onMessage = function($connection, $data) {
global $factory;
$factory->createClient('localhost:6379')->then(function (Client $client) use ($connection) {
$client->set('greeting', 'Hello world');
$client->append('greeting', '!');
$client->get('greeting')->then(function ($greeting) use ($connection){
// Hello world!
echo $greeting . PHP_EOL;
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
功能介绍 1.增加了缓存技术,加载技术更快! 2.广告添加。 3.增加视频资源,畅享资源一 4.增加大淘客 领卷优惠直播 | 咚咚抢 | 超级人气榜 | 9块9包邮 任意选 5.增加关键字屏蔽搜索。 6.增加独播链接屏蔽 7.手机接口 电脑接口 。 8.自定义抢先看电影 9.无需数据库,全自动在线采集播放配置缓存技术 超快速度浏览 10.自适应手机 电脑端 再也不用单独做手机端网站 后台地址:域名+ /index/login/login.html 列:127.0.0.1/index/login/login.html 默认账号:admin 默认密码:123456 注意事项: 1.源码采用了伪静态 需要配置好伪静态 2.源码采用THINKPHP搭建 3.php版本需要 5.6+ 以上的版本 模板目录: application\index\view\vip 为前台目录 application\index\view\admin 为后台目录
资源推荐
资源详情
资源评论
收起资源包目录
vip影视淘客源码-6.3版 (2000个子文件)
fontawesome-webfont.svg_v=4.3.0 306KB
fontawesome-webfont.ttf_v=4.3.0 119KB
fontawesome-webfont.woff_v=4.3.0 70KB
fontawesome-webfont.eot_v=4.3.0 59KB
fontawesome-webfont.woff2_v=4.3.0 55KB
phpunit.bat 117B
test.bmp 0B
web.Config 612B
summernote-bs3.css 143KB
style.css 125KB
bootstrap.min.css 115KB
bootstrap.min.css 115KB
animate.css 64KB
style.css 58KB
datepicker3.css 33KB
font-awesome.css 28KB
style.min.css 25KB
ambiance.css 25KB
simditor.css 17KB
jquery-ui-1.10.4.custom.min.css 14KB
jasny-bootstrap.min.css 14KB
chosen.css 13KB
ui.jqgrid.css 13KB
index.css 12KB
dropzone.css 11KB
layim.css 11KB
fullcalendar.css 11KB
tv.css 10KB
movie.css 10KB
dongman.css 10KB
summernote.css 10KB
nv.d3.min.css 9KB
phoneScan.css 8KB
webuploader-demo.css 8KB
codemirror.css 7KB
toastr.min.css 7KB
layer.css 6KB
jquery.steps.css 6KB
jquery.fancybox.css 5KB
dataTables.bootstrap.css 5KB
19523c62378ebdb5.css 4KB
down.css 4KB
basic.css 4KB
bootstrap-colorpicker.min.css 3KB
play.css 3KB
ion.rangeSlider.css 3KB
jquery.nouislider.css 3KB
bootstrap-markdown.min.css 3KB
jquery.gritter.css 3KB
public.css 2KB
ion.rangeSlider.skinFlat.css 2KB
style.css 2KB
custom.css 1KB
bootstrap-treeview.css 1KB
fullcalendar.print.css 668B
switchery.css 610B
webuploader.css 515B
morris-0.4.3.min.css 442B
dashboard.html.dist 7KB
file.html.dist 3KB
TestCaseMethod.tpl.dist 3KB
directory.html.dist 2KB
phpmd.xml.dist 1KB
mocked_class.tpl.dist 1KB
phpunit.xml.dist 903B
phpunit.xml.dist 888B
file_item.html.dist 871B
phpmd.xml.dist 845B
phpmd.xml.dist 845B
phpunit.xml.dist 836B
phpunit.xml.dist 831B
directory_item.html.dist 821B
phpunit.xml.dist 803B
Migration.template.php.dist 756B
proxied_method.tpl.dist 716B
phpunit.xml.dist 681B
phpunit.xml.dist 677B
phpunit.xml.dist 661B
phpunit.xml.dist 658B
phpunit.xml.dist 654B
mocked_method.tpl.dist 644B
phpunit.xml.dist 635B
method_item.html.dist 632B
phpunit.xml.dist 619B
phpunit.xml.dist 619B
phpunit.xml.dist 446B
Seed.template.php.dist 326B
coverage_bar.html.dist 305B
mocked_class_method.tpl.dist 237B
wsdl_class.tpl.dist 179B
unmocked_clone.tpl.dist 159B
mocked_static_method.tpl.dist 151B
mocked_clone.tpl.dist 132B
wsdl_method.tpl.dist 60B
trait_class.tpl.dist 55B
fontawesome-webfont.eot 59KB
glyphicons-halflings-regular.eot 20KB
glyphicons-halflings-regular.eot 20KB
icomoon.eot 1KB
hiddeninput.exe 9KB
共 2000 条
- 1
- 2
- 3
- 4
- 5
- 6
- 20
资源评论
- qq_433004262019-07-09手机微信打开搜索后页面电影无法打开怎么解决。
qq_43623078
- 粉丝: 0
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- TRIZ矛盾矩阵表.pdf
- ssm基于SSM框架的购物商城系统+jsp.zip
- ssm基于SSM框架的个人博客网站的设计与实现+vue.zip
- ssm基于SSM框架的金鱼销售平台的开发和实现+jsp.zip
- ssm基于SSM框架的德云社票务系统的设计与实现+vue.zip
- ssm基于SSM框架的安全教育平台+vue.zip
- ssm基于ssm框架的大学生就业信息平台+jsp.zip
- ssm基于SSM的养老院老人健康监护平台设计与实现+vue.zip
- ssm基于ssm的疫情物质管理系统+jsp.zip
- ssm基于SSM的药房药品采购集中管理系统的设计与实现+vue.zip
- ssm基于SSM的乡镇篮球队管理系统+jsp.zip
- ssm基于ssm的新能源汽车在线租赁管理系统+vue.zip
- ssm基于SSM的校园二手物品交易平台+vue.zip
- ssm基于ssm的人才招聘网站+jsp.zip
- ssm基于SSM的高校疫情管理系统设计与实现+vue.zip
- ssm基于ssm的线上课程管理系统+jsp.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功