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();
不会自己切换的,得自己判断
好的 谢谢