关于异步任务

mopolun520

http://doc.workerman.net/faq/async-task.html
对文档异步任务有个疑问
例如我有10台专门处理异步任务的服务器
能否做到负载均衡一样的效果呢
例如一台建立了10个任务. 能否自动切换到第二台服务器吗?
还是需要自己去判断A服务器 是否建立了10个任务 自动切换IP呢

new AsyncTcpConnection('Text://127.0.0.1:12345');
use Workerman\Worker;
use \Workerman\Connection\AsyncTcpConnection;
require_once __DIR__ . '/Workerman/Autoloader.php';

// websocket服务
$worker = new Worker('websocket://0.0.0.0:8080');

$worker->onMessage = function($ws_connection, $message)
{
    // 与远程task服务建立异步连接,ip为远程task服务的ip,如果是本机就是127.0.0.1,如果是集群就是lvs的ip
    $task_connection = new AsyncTcpConnection('Text://127.0.0.1:12345');
    // 任务及参数数据
    $task_data = array(
        'function' => 'send_mail',
        'args'       => array('from'=>'xxx', 'to'=>'xxx', 'contents'=>'xxx'),
    );
    // 发送数据
    $task_connection->send(json_encode($task_data));
    // 异步获得结果
    $task_connection->onMessage = function($task_connection, $task_result)use($ws_connection)
    {
         // 结果
         var_dump($task_result);
         // 获得结果后记得关闭异步连接
         $task_connection->close();
         // 通知对应的websocket客户端任务完成
         $ws_connection->send('task complete');
    };
    // 执行异步连接
    $task_connection->connect();
}

Worker::runAll();
5300 1 0
1个回答

静默

不会自己切换的,得自己判断

年代过于久远,无法发表回答
×
🔝