導航:首頁 > 萬維百科 > workermancms

workermancms

發布時間:2021-02-03 22:43:17

1、workerman 能在thinkphp的框架上使用嗎

workerman 能在thinkphp的框架上使用

$Gateway =  new OrgUtilGateway('127.0.0.1:5136');

$Gateway->sendToUid(1021,json_encode(array()));

下載workerman, 放入thinkphp,注意與Home平級,就把workerman當做是一個模塊。

進入Home/Controller目錄,新建WorkermanController.class.php

workerman和thinkphp完美結合使用源碼

直接上源碼,這里我是以守護進程方式運行的,調試的話,可以去掉daemonize = true 這行.


<?php

namespace AdminController;

use WorkermanWorker;

/**

* 用戶信息查詢

*/

class WorkermanController{

/**

* 用戶信息查詢

*/

public function index(){

if(!IS_CLI){

die("access illegal");

}

require_once APP_PATH.'Workerman/Autoloader.php';


// 每個進程最多執行1000個請求

define('MAX_REQUEST', 1000);


Worker::$daemonize = true;//以守護進程運行

Worker::$pidFile = '/data/wwwlogs/CMSWorker/workerman.pid';//方便監控WorkerMan進程狀態

Worker::$stdoutFile = '/data/wwwlogs/CMSWorker/stdout.log';//輸出日誌, 如echo,var_mp等

Worker::$logFile = '/data/wwwlogs/CMSWorker/workerman.log';//workerman自身相關的日誌,包括啟動、停止等,不包含任何業務日誌


$worker = new Worker('text://172.16.0.10:10024');

$worker->name = 'CMSWorker';

$worker->count = 2;

//$worker->transport = 'udp';// 使用udp協議,默認TCP


$worker->onWorkerStart = function($worker){

echo "Worker starting... ";

};

$worker->onMessage = function($connection, $data){

static $request_count = 0;// 已經處理請求數

var_mp($data);

$connection->send("hello");


/*

* 退出當前進程,主進程會立刻重新啟動一個全新進程補充上來,從而完成進程重啟

*/

if(++$request_count >= MAX_REQUEST){// 如果請求數達到1000

Worker::stopAll();

}

};


$worker->onBufferFull = function($connection){

echo "bufferFull and do not send again ";

};

$worker->onBufferDrain = function($connection){

echo "buffer drain and continue send ";

};


$worker->onWorkerStop = function($worker){

echo "Worker stopping... ";

};


$worker->onError = function($connection, $code, $msg){

echo "error $code $msg ";

};


// 運行worker

Worker::runAll();

}

}


修改Workerman/Worker.php源碼,找到parseCommand()方法,workerman版本3.3.2的話,在586行,修改命令行檢測語法:


protected static function parseCommand()

{

global $argv;

// Check argv;

$start_file = $argv[0];

if (!isset($argv[2])) {

exit("Usage: php yourfile.php Controller/Action {start|stop|restart|reload|status|kill} ");

}


// Get command.

$command = trim($argv[2]);

$command2 = isset($argv[3]) ? $argv[3] : '';

.....

}


OK,此時大功告成。


Linux命令行下運行,注意,此處要切換到thinkphp根目錄下面

/usr/local/php/bin/php index.php Workerman/index start


查看運行狀態:

/usr/local/php/bin/php index.php Workerman/index status


此處命令行可以放入全局變數中,直接以php運行

2、workerman 能在thinkphp的框架上使用嗎

當然能啊用workerman 能在thinkphp的框架上使用
$Gateway = new \Org\Util\Gateway('127.0.0.1:5136');
$Gateway->sendToUid(1021,json_encode(array()));
下載workerman, 放入thinkphp,注意與Home平級,就把workerman當做是一個模塊。
進入Home/Controller目錄,新建WorkermanController.class.php

<li>workerman和thinkphp完美結合使用源碼

直接上源碼,這里我是以守護進程方式運行的,調試的話,可以去掉daemonize = true 這行.

<?php
namespace Admin\Controller;
use Workerman\Worker;
/**
* 用戶信息查詢
*/
class WorkermanController{
/**
* 用戶信息查詢
*/
public function index(){
if(!IS_CLI){
die("access illegal");
}
require_once APP_PATH.'Workerman/Autoloader.php';

// 每個進程最多執行1000個請求
define('MAX_REQUEST', 1000);

Worker::$daemonize = true;//以守護進程運行
Worker::$pidFile = '/data/wwwlogs/CMSWorker/workerman.pid';//方便監控WorkerMan進程狀態 希望對你有用,我在後盾人線下面授培訓學習剛下課,有不會的可以問我
♪ 加油加油! ♪
ミ ゛ミ ∧_∧ ミ゛ミ
ミ ミ ( ・∀・ )ミ゛ミ
゛゛ \ /゛゛
 i⌒ヽ |
  (_) ノ
  ∪

3、workerman 平滑重啟有什麼用

workerman 能在thinkphp的框架上使用
$Gateway = new \Org\Util\Gateway('127.0.0.1:5136');
$Gateway->sendToUid(1021,json_encode(array()));
下載workerman, 放入thinkphp,注意與Home平級,就把workerman當做是一個模塊。
進入Home/Controller目錄,新建WorkermanController.class.php
workerman和thinkphp完美結合使用源碼
直接上源碼,這里我是以守護進程方式運行的,調試的話,可以去掉daemonize = true 這行.

<?php
namespace Admin\Controller;
use Workerman\Worker;
/**
* 用戶信息查詢
*/
class WorkermanController{
/**
* 用戶信息查詢
*/
public function index(){
if(!IS_CLI){
die("access illegal");
}
require_once APP_PATH.'Workerman/Autoloader.php';

// 每個進程最多執行1000個請求
define('MAX_REQUEST', 1000);

Worker::$daemonize = true;//以守護進程運行
Worker::$pidFile = '/data/wwwlogs/CMSWorker/workerman.pid';//方便監控WorkerMan進程狀態
Worker::$stdoutFile = '/data/wwwlogs/CMSWorker/stdout.log';//輸出日誌, 如echo,var_mp等
Worker::$logFile = '/data/wwwlogs/CMSWorker/workerman.log';//workerman自身相關的日誌,包括啟動、停止等,不包含任何業務日誌

$worker = new Worker('text://172.16.0.10:10024');
$worker->name = 'CMSWorker';
$worker->count = 2;
//$worker->transport = 'udp';// 使用udp協議,默認TCP

$worker->onWorkerStart = function($worker){
echo "Worker starting...\n";
};
$worker->onMessage = function($connection, $data){
static $request_count = 0;// 已經處理請求數
var_mp($data);
$connection->send("hello");

/*
* 退出當前進程,主進程會立刻重新啟動一個全新進程補充上來,從而完成進程重啟
*/
if(++$request_count >= MAX_REQUEST){// 如果請求數達到1000
Worker::stopAll();
}
};

$worker->onBufferFull = function($connection){
echo "bufferFull and do not send again\n";
};
$worker->onBufferDrain = function($connection){
echo "buffer drain and continue send\n";
};

$worker->onWorkerStop = function($worker){
echo "Worker stopping...\n";
};

$worker->onError = function($connection, $code, $msg){
echo "error $code $msg\n";
};

// 運行worker
Worker::runAll();
}
}

修改Workerman/Worker.php源碼,找到parseCommand()方法,workerman版本3.3.2的話,在586行,修改命令行檢測語法:

protected static function parseCommand()
{
global $argv;
// Check argv;
$start_file = $argv[0];
if (!isset($argv[2])) {
exit("Usage: php yourfile.php Controller/Action {start|stop|restart|reload|status|kill}\n");
}

// Get command.
$command = trim($argv[2]);
$command2 = isset($argv[3]) ? $argv[3] : '';
.....
}

OK,此時大功告成。

Linux命令行下運行,注意,此處要切換到thinkphp根目錄下面
/usr/local/php/bin/php index.php Workerman/index start

查看運行狀態:
/usr/local/php/bin/php index.php Workerman/index status

此處命令行可以放入全局變數中,直接以php運行

與workermancms相關的知識