有个地方不理解
来源:7-14 登录模块优化(一)
慕数据7346926
2018-12-28
老师有个地方不理解,之前引入的是base.php 为何因为类找不到改为引入start.php就能找到了,
start.php 不也是引入的base.php吗,那和直接引入base.php有什么区别呢
2回答
-
同学您好。您的问题问的很好。
这个我记得再课程中有做说明的。 因为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。
希望老师的回答能帮到您,如果还不理解的话 可以加老师扣沟通。祝您学习愉快。
122020-10-04 -
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));
}
}
}
}
}112019-01-10
相似问题