请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

有个地方不理解

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

正在回答

2回答

singwa 2019-01-05 01:12:24

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

这个我记得再课程中有做说明的。 因为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 回复 有任何疑惑可以回复我~
qq_青青子矜_4 2019-01-10 11:13:46

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 回复 有任何疑惑可以回复我~
  • 在后续课程中发现,在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 16:04:04
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号