在本机(mac)上运行正常:
链接配置如下:
$worker->onWorkerStart = function () {
global $mysql;
global $factory;
// 获得workerman的event-loop,
$loop = Worker::getEventLoop();
// Redis
$factory = new Factory($loop);
// 连接参数
$mysql = new React\MySQL\Connection($loop, );
$mysql->on('error', function ($e) {
echo $e;
});
$mysql->connect(function ($e) {
if ($e) {
echo $e;
} else {
echo "mysql connect success\n";
}
});
异常报错如下:
exception 'React\Dns\RecordNotFoundException' with message 'DNS Request did not return valid answer.' in /Data/htdocs/SEMAC/Workerman/vendor/react/dns/src/Resolver/Resolver.php:41
Stack trace:
#0 /Data/htdocs/SEMAC/Workerman/vendor/react/dns/src/Resolver/Resolver.php(29): React\Dns\Resolver\Resolver->extractAddress(Object(React\Dns\Query\Query), Object(React\Dns\Model\Message))
#1 /Data/htdocs/SEMAC/Workerman/vendor/react/promise/src/FulfilledPromise.php(25): React\Dns\Resolver\Resolver->React\Dns\Resolver\{closure}(Object(React\Dns\Model\Message))
#2 /Data/htdocs/SEMAC/Workerman/vendor/react/promise/src/Promise.php(119): React\Promise\FulfilledPromise->then(Object(Closure), NULL)
#3 /Data/htdocs/SEMAC/Workerman/vendor/react/promise/src/Promise.php(174): React\Promise\Promise->React\Promise\{closure}(Object(React\Promise\FulfilledPromise))
#4 /Data/htdocs/SEMAC/Workerman/vendor/react/promise/src/Promise.php(133): React\Promise\Promise->settle(Object(React\Promise\FulfilledPromise))
#5 /Data/htdocs/SEMAC/Workerman/vendor/react/promise/src/Promise.php(192): React\Promise\Promise->resolve(Object(React\Dns\Model\Message))
#6 /Data/htdocs/SEMAC/Workerman/vendor/react/promise/src/FulfilledPromise.php(39): React\Promise\Promise->React\Promise\{closure}(Object(React\Dns\Model\Message))
#7 /Data/htdocs/SEMAC/Workerman/vendor/react/promise/src/Promise.php(120): React\Promise\FulfilledPromise->done(Object(Closure), Object(Closure), Object(Closure))
#8 /Data/htdocs/SEMAC/Workerman/vendor/react/promise/src/Promise.php(174): React\Promise\Promise->React\Promise\{closure}(Object(React\Promise\FulfilledPromise))
#9 /Data/htdocs/SEMAC/Workerman/vendor/react/promise/src/Promise.php(133): React\Promise\Promise->settle(Object(React\Promise\FulfilledPromise))
#10 /Data/htdocs/SEMAC/Workerman/vendor/react/promise/src/Promise.php(192): React\Promise\Promise->resolve(Object(React\Dns\Model\Message))
#11 /Data/htdocs/SEMAC/Workerman/vendor/react/promise/src/FulfilledPromise.php(39): React\Promise\Promise->React\Promise\{closure}(Object(React\Dns\Model\Message))
#12 /Data/htdocs/SEMAC/Workerman/vendor/react/promise/src/Promise.php(120): React\Promise\FulfilledPromise->done(Object(Closure), Object(Closure), Object(Closure))
#13 /Data/htdocs/SEMAC/Workerman/vendor/react/promise/src/Promise.php(174): React\Promise\Promise->React\Promise\{closure}(Object(React\Promise\FulfilledPromise))
#14 /Data/htdocs/SEMAC/Workerman/vendor/react/promise/src/Promise.php(133): React\Promise\Promise->settle(Object(React\Promise\FulfilledPromise))
#15 /Data/htdocs/SEMAC/Workerman/vendor/react/promise/src/Promise.php(192): React\Promise\Promise->resolve(Object(React\Dns\Model\Message))
#16 : React\Promise\Promise->React\Promise\{closure}(Object(React\Dns\Model\Message))
#17 /Data/htdocs/SEMAC/Workerman/vendor/react/promise/src/Deferred.php(35): call_user_func(Object(Closure), Object(React\Dns\Model\Message))
#18 /Data/htdocs/SEMAC/Workerman/vendor/react/dns/src/Query/Executor.php(94): React\Promise\Deferred->resolve(Object(React\Dns\Model\Message))
#19 : React\Dns\Query\Executor->React\Dns\Query\{closure}('\x02\v\x81\x83\x00\x01\x00\x00\x00\x01\x00\x00\tlo...', Object(React\Socket\Connection))
#20 /Data/htdocs/SEMAC/Workerman/vendor/evenement/evenement/src/Evenement/EventEmitterTrait.php(65): call_user_func_array(Object(Closure), Array)
#21 /Data/htdocs/SEMAC/Workerman/vendor/react/stream/src/Stream.php(170): Evenement\EventEmitter->emit('data', Array)
#22 : React\Stream\Stream->handleData(Resource id #62, Object(Workerman\Events\React\StreamSelectLoop))
#23 /Data/htdocs/SEMAC/Workerman/vendor/react/event-loop/src/StreamSelectLoop.php(232): call_user_func(Array, Resource id #62, Object(Workerman\Events\React\StreamSelectLoop))
#24 /Data/htdocs/SEMAC/Workerman/vendor/react/event-loop/src/StreamSelectLoop.php(201): React\EventLoop\StreamSelectLoop->waitForStreamActivity(997540.95077515)
#25 /Data/htdocs/SEMAC/Workerman/Events/React.php(98): React\EventLoop\StreamSelectLoop->run()
#26 /Data/htdocs/SEMAC/Workerman/Worker.php(1521): Workerman\Events\React->loop()
#27 /Data/htdocs/SEMAC/Workerman/Worker.php(932): Workerman\Worker->run()
#28 /Data/htdocs/SEMAC/Workerman/Worker.php(895): Workerman\Worker::forkOneWorker(Object(Workerman\Worker))
#29 /Data/htdocs/SEMAC/Workerman/Worker.php(427): Workerman\Worker::forkWorkers()
#30 /Data/htdocs/SEMAC/server.php(414): Workerman\Worker::runAll()
exception 'React\Dns\Query\TimeoutException' with message 'DNS query for localhost timed out' in /Data/htdocs/SEMAC/Workerman/vendor/react/dns/src/Query/Executor.php:69
Stack trace:
#0 : React\Dns\Query\Executor->React\Dns\Query\{closure}(Object(React\EventLoop\Timer\Timer))
#1 /Data/htdocs/SEMAC/Workerman/vendor/react/event-loop/src/Timer/Timers.php(90): call_user_func(Object(Closure), Object(React\EventLoop\Timer\Timer))
#2 /Data/htdocs/SEMAC/Workerman/vendor/react/event-loop/src/StreamSelectLoop.php(177): React\EventLoop\Timer\Timers->tick()
#3 /Data/htdocs/SEMAC/Workerman/Events/React.php(98): React\EventLoop\StreamSelectLoop->run()
#4 /Data/htdocs/SEMAC/Workerman/Worker.php(1521): Workerman\Events\React->loop()
#5 /Data/htdocs/SEMAC/Workerman/Worker.php(932): Workerman\Worker->run()
#6 /Data/htdocs/SEMAC/Workerman/Worker.php(895): Workerman\Worker::forkOneWorker(Object(Workerman\Worker))
#7 /Data/htdocs/SEMAC/Workerman/Worker.php(427): Workerman\Worker::forkWorkers()
#8 /Data/htdocs/SEMAC/server.php(414): Workerman\Worker::runAll()
#9 {main}
数据库参数用ip,不要用localhost域名。
嗯,我试过了,用IP会报另一个错误。 Connection refused
我知道了,我服务器的MySQL是另一个端口,需要在
$mysql = new React\MySQL\Connection($loop, );
这里加入端口号.