task worker的代码:
<?php
use Workerman\Worker;
require_once './Workerman/Autoloader.php';
// task worker,使用Text协议
$task_worker = new Worker('Text://0.0.0.0:12345');
// task进程数可以根据需要多开一些
$task_worker->count = 1;
$task_worker->name = 'TaskWorker1';
$task_worker->onMessage = function($connection, $task_data)
{
//这下面的代码一直不会执行?????????
// 发送结果
$task_result='1111';
$connection->send($task_result);
};
// 运行worker
Worker::runAll();
?>
调用代码:
// 与远程task服务建立异步链接,ip为远程task服务的ip,如果是本机就是127.0.0.1,如果是集群就是lvs的ip
$task_connection = new AsyncTcpConnection('Text://127.0.0.1:12345');
// 发送数据
$task_connection->send('send to task workerman');
// 异步获得结果
$task_connection->onMessage = function($task_connection, $task_result)
{
//这下面的代码一直调用不了????
echo $task_result;
//获得结果后记得关闭链接
$task_connection->close();
};
$task_connection->onError = function($connection, $code, $msg)
{
//这里也没有报错
};
// 执行异步链接
$task_connection->connect();
代码如上,不知道哪里出问题了, 两个onMessage方法都一直不会被调用。 帮忙看看啊!!! 多谢!!
需要在workerman环境 onXXX 回调中调用代码