启动包含redis的心跳后报错,第一次用不大明白

thinkInPhp

启动的php代码大约如下:

<?php
require_once __DIR__ . '/Workerman/Autoloader.php';
use Workerman\Lib\Timer;
use Workerman\Worker;

$worker = new Worker('websocket://0.0.0.0:8484');

//worker实现心跳
$worker->onWorkerStart = function($worker) {
    $worker->count = 2;//生成两个进程
    $tmpredis       = new RedisCluster();
    $tmpredis->connect(array('host' => '127.0.0.1','port' => 6379), $isMaster = true);
    $redisclient    = $tmpredis->getRedis();
    Timer::add(10, function()use($worker){//设置10秒的定时器
        //查找心跳的redis数据

linux下启动后报错为:

2017-01-03 15:19:36 pid:14661 WORKER EXIT UNEXPECTED E_ERROR Class 'RedisCluster' not found in /home/wwwroot/default/commonpage/controller/wkman/WorkMan.php on line 12
2017-01-03 15:19:36 pid:14359 worker exit with status 65280
2017-01-03 15:19:36 pid:14662 WORKER EXIT UNEXPECTED E_ERROR Class 'RedisCluster' not found in /home/wwwroot/default/commonpage/controller/wkman/WorkMan.php on line 12
2017-01-03 15:19:36 pid:14359 worker exit with status 65280
2017-01-03 15:19:36 pid:14663 WORKER EXIT UNEXPECTED E_ERROR Class 'RedisCluster' not found in /home/wwwroot/default/commonpage/controller/wkman/WorkMan.php on line 12

12行的错误就是在new RedisCluster的时候抛出,这个类已经是存在的,请问是需要用require加路径来将这个类加载进来吗?

请知道的人帮下忙,workman属于第一次使用,诸多不大明白的地方

4807 4 0
4个回答

walkor

workerman不知道你的RedisCluster类文件在哪里,你可以自己require 进来,或者自己弄个autoloader自动加载

  • thinkInPhp 2017-01-03

    那问下,我这个错误的抛出是因为没有引用这个类所在的路径造成的?引用进来后,又出现其他的错误。纠结~

thinkInPhp

@walkor 那问下,我这个错误的抛出是因为没有引用这个类所在的路径造成的?引用进来后,又出现其他的错误。纠结~

  • 暂无评论
walkor

补充下php基础知识吧,
看下命名空间和自动加载部分,不然你永远不懂

  • 暂无评论
evilk

推荐使用 composer autoload

  • 暂无评论
年代过于久远,无法发表回答
🔝