给各位吴彦祖们问好 我这里想启用一个单独的businessWorker进程用来处理定时任务和一些费时的异步操作,我想通过client_id获取玩家session数据,但是又不想gateway进程转发玩家请求到这个businessWorker进程中来,可以这么操作
写一个start_task.php
<?php use Workerman\Worker; use GatewayWorker\Lib\Gateway; require_once __DIR__ . '/../../vendor/autoload.php'; $worker = new Worker(); // worker名称 $worker->name = 'task'; // bussinessWorker进程数量 $worker->count = 1; $worker->onWorkerStart = function(){ // 全局设置一次即可,端口为 start_register.php里的端口 Gateway::$registerAddress = '127.0.0.1:实际端口'; $session = Gateway::getSession($client_id); }; // 如果不是在根目录启动,则运行runAll方法 if(!defined('GLOBAL_START')) { Worker::runAll(); }
这样的话,我测试了gateway依然会把请求转发到这个task进程中来,那如果我的定时任务时间过长,不是会堵塞玩家的请求吗?
gateway不会转发请求到task进程
是的,你是对的,我测试的时候只是reload,现在我stop后再重启,就不转发了,谢谢
写一个start_task.php
这样的话,我测试了gateway依然会把请求转发到这个task进程中来,那如果我的定时任务时间过长,不是会堵塞玩家的请求吗?
gateway不会转发请求到task进程
是的,你是对的,我测试的时候只是reload,现在我stop后再重启,就不转发了,谢谢