写了一个定时器的任务,但是在调用自己写的类的时候,使用命令空间一直报错找不到类,

0

<?php


ini_set("memory_limit", "-1");


use Workerman\Worker;
use \Workerman\Lib\Timer;
use Applications\My\Service\TestTime;


//引入自动加载类
//第一种方法
//require_once DIR . '/../../vendor/autoload.php';


//第二种方法
require_once DIR.'/../../vendor/workerman/workerman/Autoloader.php';


// 创建一个Worker监听1234端口,使用http协议通讯
$http_worker = new Worker('http://0.0.0.0:1234');


//设定名字
$http_worker->name = 'TestTimeWorker';


// 启动1个进程对外提供服务
$http_worker->count = 1;


//设置Worker子进程启动时的回调函数,每个子进程启动时都会执行
$http_worker->onWorkerStart = function ($http_worker) {


Timer::add(1, function () {
TestTime::doData();
});

};


//接收到浏览器发送的数据时回复hello world给浏览器
$http_worker->onMessage = function ($connection, $data) {
// 向浏览器发送hello world
$connection->send('hello world');
};


// 如果不是在根目录启动,则运行runAll方法,运行worker
if (!defined('GLOBAL_START')) {
Worker::runAll();
}


报错:
Class 'Applications\My\Service\TestTime' not found in /Users/rich/www/myworkerman/Applications/My/start_demotime.php:38

48BA06D6556532D0CEE73019810FC152.jpg lei.png
已邀请:

xiuwang

赞同来自: xiaozhu

因为你的项目没有自动加载功能吧。
自己写一个autload自动加载,如果不会写就用composer给你项目生成一个自动加载。


项目根目录执行composer require workerman/workerman ,会生成composer.json内容如下


{
"require": {
"workerman/workerman": "^4.0"
}
}

将composer.json改为


{
"require": {
"workerman/workerman": "^4.0"
},
"autoload": {
"psr-4" : {
"Applications\\" : "./Applications"
}
}
}

执行 composer dumpautoload


然后代码里引用自动加载文件


require_once __DIR__ . '/vendor/autoload.php';

这样就给你自己的项目生成了一个自动加载,符合psr4规范的类都可以自动加载进来

cai584887013 - 菜鸟程序员

赞同来自:

不能有die

要回复问题请先登录注册