问题:想把gatewaywork封装下,启动文件index.php首先是加载了vendor的core.php文件(文件内容附件),可以正常运行;
代码:
foreach(glob(APP_PATH.'_/start_.php') as $start_file)
{
require_once $start_file;
}
// 标记是全局启动
Worker::runAll();
但是如果引入一个对象启动类比如Applicaiton::run();把上面的代码放入运行,此时启动后文件监控在终端报错!(报错信息说文件夹为空)
结论:经过测试发现只要将代码:
foreach(glob(APP_PATH.'_/start_.php') as $start_file)
{
require_once $start_file;
}
//这个代码放入到core.php中,然后Worker::runAll();放入到封装的Applicaiton::run();
下,可以正常运行。
疑问:难道我不能把引入的那段代码放入到封装的Applicaiton::run();下,保证core.php一个清爽的代码:只有一行
Applicaiton::run();运行伟大的框架?谢谢群主指导!
最后面截图调用栈里很明显 check_files_change($monitor_dir) 里$monitor_dir传了null导致的。
https://github.com/walkor/workerman-filemonitor/blob/master/Applications/FileMonitor/start.php#L6
$monitor_dir在这里是一个全局变量,你看看你是不是把它,放入到函数里变成临时变量了,导致读不到$monitor_dir。
@walkor 真的很感谢您,但是我排查了下,还是不能发现问题!我再提问的时候首先已经看了手册,同时也看论坛相关回答,但是仍然有问题。。。。。
问题如附件图片
新的发现:如果我把路径写死,可以运行,但是mysql会启动好多次(图片5,图片6)
谢谢!
我看懂群主的意思了。
我想不行了直接:https://zhidao.baidu.com/question/470552070.html;其次,直接丢 use(外部变量);问题是最后为何reload那么多次
其实可以定义常量, define('MONITOR_DIR', 'xxxxxxx');
这样肯定哪里都能访问到了
最后提示意思是GatewayWorker/Lib/DbConnection类不在使用了,让用Workerman/Mysql类
这个我知道,源码没有区别,直接吧源码的echo注释掉
关键是最后为何reload那么多次?这个比较郁闷,正常不会那么多次