有个地方不理解

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

慕数据7346926

2018-12-28

老师有个地方不理解,之前引入的是base.php 为何因为类找不到改为引入start.php就能找到了,
start.php 不也是引入的base.php吗,那和直接引入base.php有什么区别呢

写回答

2回答

singwa

2019-01-05

同学您好。您的问题问的很好。

这个我记得再课程中有做说明的。 因为start.php其实他引入了 base.php ,引入完毕之后 他会默认执行

// 执行应用并响应

Container::get('app', [defined('APP_PATH') ? APP_PATH : ''])

->run()

->send();

这个内容,


而我们本套课程需要做适配, 再onRequest回调函数中 我们需要对一些参数做些视频, 然后 再去执行Container::get


所以不需要引入start.php 不然会执行两次Container::get,   


故此 引入base.php  然后在 执行 Container::get。

希望老师的回答能帮到您,如果还不理解的话 可以加老师扣沟通。祝您学习愉快。 

1
2
Bunny3936
回复
qq_切菜的屠龙刀_0
对 我也想问
2020-10-04
共2条回复

qq_青青子矜_4

2019-01-10

onWorkerStart

此事件在Worker进程/Task进程启动时发生 ,我们投递任务的时候会调用,而进程相关独立的(这是关键)

在老师代码基础上修改:

public function onWorkerStart($server,$work_id)
{
   //定义应用目录
   define('APP_PATH', __DIR__ . '/../application/');
   //方式一
   /*if($work_id >= $server->setting['worker_num']){
       //task进程
       require __DIR__ . '/../thinkphp/start.php';
   }else{
       //worker进程
       require __DIR__ . '/../thinkphp/base.php';
   }*/

   //方式二
   require __DIR__ . '/../thinkphp/base.php';
   if ($work_id >= $server->setting['worker_num']) {
       //如果是task进程
       think\Loader::addNamespace('app', APP_PATH);
       //加载配置文件
       $config_dir = __DIR__. "/../config";
       var_dump(is_dir($config_dir));
       if (is_dir($config_dir)) {
           $files = scandir($config_dir);
           foreach ($files as $file) {
               if (pathinfo($file, PATHINFO_EXTENSION) === 'php') {
                   $filename = $config_dir . DIRECTORY_SEPARATOR . $file;
                   think\facade\Config::load($filename, pathinfo($file, PATHINFO_FILENAME));
               }
           }
       }
   }
}


1
1
qq_青青子矜_4
在后续课程中发现,在onPen中又会提示找不到类,修改一下代码 public function onWorkerStart($server,$work_id) { //定义应用目录 define('APP_PATH', __DIR__ . '/../application/'); //加载基础 require __DIR__ . '/../thinkphp/base.php'; //注册命名空间 think\Loader::addNamespace('app', APP_PATH); //加载配置文件 $config_dir = __DIR__. "/../config"; if (is_dir($config_dir)) { $files = scandir($config_dir); foreach ($files as $file) { if (pathinfo($file, PATHINFO_EXTENSION) === 'php') { $filename = $config_dir . DIRECTORY_SEPARATOR . $file; think\facade\Config::load($filename, pathinfo($file, PATHINFO_FILENAME)); } } } }
2019-01-10
共1条回复

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

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

2228 学习 · 1062 问题

查看课程