入口改成require __DIR__ . '/../thinkphp/start.php';还是找不到类呢

来源:7-14 登录模块优化(一)

芭菲雨

2019-01-31

<?php
/**
 * 说明
 * PHP version 7.2
 * @author bafeiyu
 * @date 2019/1/23 10:19
 */
class Http
{
    public $ip = '0.0.0.0';
    public $port = '9504';
    public $server = null;
    public function __construct()
    {
        $this->server = new swoole_http_server($this->ip, $this->port);
        $this->server->set([
            "document_root" => "/home/work/study/htdocs/swoole_imooc/thinkphp/public/static",
            "enable_static_handler" => true,
            "task_worker_num" => 4
        ]);
        $this->server->on("workerStart", [$this, 'onWorkerStart']);
        $this->server->on("task", [$this, 'onTask']);
        $this->server->on("request", [$this, 'onRequest']);
        $this->server->start();
    }
    public function onWorkerStart($server, $workerId)
    {
        //定义框架目录
        define('APP_PATH', __DIR__ . '/../application/');
        // 加载框架基础文件
        require __DIR__ . '/../thinkphp/start.php';//base
    }
    //data = array("method"=>"test","data"=>array("phone_num"=>13718454452));
    public function onTask($server, $taskId, $workerId, $data)
    {
        $taskObj = new extend\Task();
        $method = $data['method'];
        return $taskObj->$method($data['data']);
    }
    public function onRequest($request, $response)
    {
        $_SERVER = [];
        if (isset($request->server)) {
            foreach ($request->server as $k => $i) {
                $_SERVER[strtoupper($k)] = $i;
            }
        }
        if (isset($request->header)) {
            foreach ($request->header as $k => $i) {
                $_SERVER[strtoupper($k)] = $i;
            }
        }
        $_GET = [];
        if (isset($request->get)) {
            foreach ($request->get as $k => $i) {
                $_GET[$k] = $i;
            }
        }
        $_POST = [];
        $_POST['http'] = $this->server;
        if (isset($request->post)) {
            foreach ($request->get as $k => $i) {
                $_POST[$k] = $i;
            }
        }
// 执行应用并响应
        if (strpos($_SERVER['PATH_INFO'], '.') === false) {//非静态页面就加载php框架
            ob_start();
            think\Container::get('app', [defined('APP_PATH') ? APP_PATH : ''])->run()->send();
            $res = ob_get_contents();
            if ($res) {
                ob_end_clean();
            }
            $response->header('Content-Type', 'text/html; charset=utf8');
            $response->end($res);
        }
    }
}
$server = new Http();


http://img.mukewang.com/szimg/5c52c3b50001f2d012660661.jpg

这个类是存在的

http://img.mukewang.com/szimg/5c52c3eb0001f60a02790206.jpg

写回答

2回答

慕粉1546197132

2019-03-16

我也遇到同样的问题了,感觉命名空间都没有生效,找不到Task类,你解决了吗?求解办法

0
0

singwa

2019-02-12

亲爱的同学您好。麻烦您那边的代码打包发我下。我这边直接运行您代码看看,这样排查得速度回更快点。


0
0

Swoole入门到实战打造高性能赛事直播平台

swoole创始人推荐,借助Swoole打造高性能直播平台

2228 学习 · 1062 问题

查看课程