http://doc.workerman.net/faq/async-task.html
對(duì)文檔異步任務(wù)有個(gè)疑問(wèn)
例如我有10臺(tái)專門處理異步任務(wù)的服務(wù)器
能否做到負(fù)載均衡一樣的效果呢
例如一臺(tái)建立了10個(gè)任務(wù). 能否自動(dòng)切換到第二臺(tái)服務(wù)器嗎?
還是需要自己去判斷A服務(wù)器 是否建立了10個(gè)任務(wù) 自動(dòng)切換IP呢
new AsyncTcpConnection('Text://127.0.0.1:12345');
use Workerman\Worker;
use \Workerman\Connection\AsyncTcpConnection;
require_once __DIR__ . '/Workerman/Autoloader.php';
// websocket服務(wù)
$worker = new Worker('websocket://0.0.0.0:8080');
$worker->onMessage = function($ws_connection, $message)
{
// 與遠(yuǎn)程task服務(wù)建立異步連接,ip為遠(yuǎn)程task服務(wù)的ip,如果是本機(jī)就是127.0.0.1,如果是集群就是lvs的ip
$task_connection = new AsyncTcpConnection('Text://127.0.0.1:12345');
// 任務(wù)及參數(shù)數(shù)據(jù)
$task_data = array(
'function' => 'send_mail',
'args' => array('from'=>'xxx', 'to'=>'xxx', 'contents'=>'xxx'),
);
// 發(fā)送數(shù)據(jù)
$task_connection->send(json_encode($task_data));
// 異步獲得結(jié)果
$task_connection->onMessage = function($task_connection, $task_result)use($ws_connection)
{
// 結(jié)果
var_dump($task_result);
// 獲得結(jié)果后記得關(guān)閉異步連接
$task_connection->close();
// 通知對(duì)應(yīng)的websocket客戶端任務(wù)完成
$ws_connection->send('task complete');
};
// 執(zhí)行異步連接
$task_connection->connect();
}
Worker::runAll();