沒有任何報(bào)錯(cuò)!
為什么同樣的代碼,在本地可以joinGroup而到了服務(wù)器上就不能joinGroup呢?
除了使用 php start status后,本地多一個(gè)
25774 1.75M text://127.0.0.1:13001 TimeWorker 0 0 0 0
服務(wù)器上沒有之外,都是一樣的。
不知道為什么服務(wù)器上沒有呢?或者是有什么其他原因?qū)е碌哪兀?/p>
在本地機(jī)器MAC的
Workerman status
---------------------------------------GLOBAL STATUS--------------------------------------------
Workerman version:3.3.2 PHP version:5.5.34
start time:2016-08-26 17:30:36 run 0 days 0 hours
load average: 2.84814453125, 2.56396484375, 2.361328125event-loop:select
6 workers 15 processes
worker_name exit_status exit_count
TradeBusiness 0 0
Gateway 0 0
PushWorker 0 0
Register 0 0
TaskWorker 0 0
TimeWorker 0 0
---------------------------------------PROCESS STATUS-------------------------------------------
pid memory listening worker_name connections total_request send_fail throw_exception
25761 1.25M websocket://0.0.0.0:13016 Gateway 3 295 0 0
25760 1.5M none TradeBusiness 3 3 0 0
25762 1.25M text://127.0.0.1:13002 PushWorker 2 294 0 0
25763 1.25M text://0.0.0.0:1236 Register 3 297 0 0
25765 1M text://127.0.0.1:13000 TaskWorker 0 0 0 0
25764 1M text://127.0.0.1:13000 TaskWorker 0 0 0 0
25766 1M text://127.0.0.1:13000 TaskWorker 0 0 0 0
25767 1M text://127.0.0.1:13000 TaskWorker 0 0 0 0
25768 1M text://127.0.0.1:13000 TaskWorker 0 0 0 0
25769 1M text://127.0.0.1:13000 TaskWorker 0 0 0 0
25770 1M text://127.0.0.1:13000 TaskWorker 0 0 0 0
25771 1M text://127.0.0.1:13000 TaskWorker 0 0 0 0
25772 1M text://127.0.0.1:13000 TaskWorker 0 0 0 0
25773 1M text://127.0.0.1:13000 TaskWorker 0 0 0 0
25774 1.75M text://127.0.0.1:13001 TimeWorker 0 0 0 0
在服務(wù)器上的
Workerman status
---------------------------------------GLOBAL STATUS--------------------------------------------
Workerman version:3.3.2 PHP version:5.3.29
start time:2016-08-26 17:43:22 run 0 days 0 hours
load average: 0.02, 0.02, 0.05 event-loop:select
6 workers 15 processes
worker_name exit_status exit_count
TradeBusiness 0 0
Gateway 0 0
PushWorker 0 0
Register 0 0
TaskWorker 0 0
TimeWorker 0 0
---------------------------------------PROCESS STATUS-------------------------------------------
pid memory listening worker_name connections total_request send_fail throw_exception
7755 2.5M none TradeBusiness 3 2 0 0
7756 2.25M websocket://0.0.0.0:13016 Gateway 2 1 0 0
7757 2.25M text://127.0.0.1:13002 PushWorker 2 1 0 0
7758 2.25M text://0.0.0.0:1288 Register 3 12 0 0
7759 2M text://127.0.0.1:13000 TaskWorker 0 0 0 0
7760 2M text://127.0.0.1:13000 TaskWorker 0 0 0 0
7761 2M text://127.0.0.1:13000 TaskWorker 0 0 0 0
7762 2M text://127.0.0.1:13000 TaskWorker 0 0 0 0
7763 2M text://127.0.0.1:13000 TaskWorker 0 0 0 0
7764 2M text://127.0.0.1:13000 TaskWorker 0 0 0 0
7765 2M text://127.0.0.1:13000 TaskWorker 0 0 0 0
7766 2M text://127.0.0.1:13000 TaskWorker 0 0 0 0
7767 2M text://127.0.0.1:13000 TaskWorker 0 0 0 0
7768 2M text://127.0.0.1:13000 TaskWorker 0 0 0 0
@walkor 剛才,我也真不知道該給什么數(shù)據(jù),代碼一模一樣,
剛剛,我針對(duì)業(yè)務(wù)定時(shí)器做了些跟蹤:
ctrl C 后出現(xiàn) worker exit with status 9
于是我跟蹤了Timer的代碼執(zhí)行時(shí)間,發(fā)現(xiàn) Gateway::getClientCountByGroup 執(zhí)行時(shí)間很長
這個(gè)問題只會(huì)在,我們的服務(wù)器上出現(xiàn),在本機(jī)則沒有這個(gè)問題
我們的服務(wù)器上,在另外一個(gè)目錄下面還跑著一個(gè)Gateway的應(yīng)用
定時(shí)器調(diào)用:
$worker->onWorkerStart = function($worker) {
//定時(shí)器
foreach(Tag::$walletType as $k=>$v){
Timer::add(1, array('\Program\Market', 'sendNewTenthOrder'), array($k));
}
}
執(zhí)行代碼是:
這個(gè)函數(shù)會(huì)被1秒鐘執(zhí)行9次,是完整的業(yè)務(wù)邏輯里面這個(gè)函數(shù)會(huì)查詢數(shù)據(jù)庫
public static function sendNewTenthOrder($wallet){
echo Tag::$walletType;
$start = time();
var_dump(Gateway::getClientCountByGroup(Tag::$walletType));
echo "Gateway::getClientCountByGroup 執(zhí)行了".(time()-$start)."秒";
}
執(zhí)行結(jié)果是:
Gateway::getClientCountByGroup 執(zhí)行了1秒woodint(0)
Gateway::getClientCountByGroup 執(zhí)行了1秒stoneint(0)
Gateway::getClientCountByGroup 執(zhí)行了1秒goldint(0)
Gateway::getClientCountByGroup 執(zhí)行了1秒iron^CWorkerman Stopping ...
int(0)
Gateway::getClientCountByGroup 執(zhí)行了2秒horseworker exit with status 9
@walkor 原因找到了,兩個(gè)應(yīng)用的注冊(cè)服務(wù)器的地址沖突了,注冊(cè)到另外的注冊(cè)服務(wù)器上了
但是,為什么自定義了注冊(cè)中心地址后,實(shí)際上還是用的Lib下的Gateway下的這個(gè)注冊(cè)中心地址呢?
/**
* 注冊(cè)中心地址
*
* @var string
*/
public static $registerAddress = '127.0.0.1:1236';
@walkor 那使用中,是直接在start_business中,使用 Gateway::$registerAddress來賦值使用自定義的注冊(cè)服務(wù)器地址嗎?
@walkor 奇怪了,我是這樣設(shè)置的,但是不行的。。。。。
我定義了常量REGISTER_PROTOCOLS作為注冊(cè)服務(wù)器的地址和端口,然后在:start_register,start_gateway和start_business里面統(tǒng)一用這個(gè)常量的。
注冊(cè)服務(wù)起來后地址和端口與REGISTER_PROTOCOLS一致
但是gateway和business卻注冊(cè)到Lib/Gateway::$registerAddress的缺省值上了
比如在start_business里:
$business_trade_worker->registerAddress = REGISTER_PROTOCOLS;
//REGISTER_PROTOCOLS為0.0.0.0:1288
或者,我還需要檢查那個(gè)部分的代碼?