問題:想把gatewaywork封裝下,啟動文件index.php首先是加載了vendor的core.php文件(文件內(nèi)容附件),可以正常運行;
代碼:
foreach(glob(APP_PATH.'_/start_.php') as $start_file)
{
require_once $start_file;
}
// 標記是全局啟動
Worker::runAll();
但是如果引入一個對象啟動類比如Applicaiton::run();把上面的代碼放入運行,此時啟動后文件監(jiān)控在終端報錯!(報錯信息說文件夾為空)
結(jié)論:經(jīng)過測試發(fā)現(xiàn)只要將代碼:
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();運行偉大的框架?謝謝群主指導!
最后面截圖調(diào)用棧里很明顯 check_files_change($monitor_dir) 里$monitor_dir傳了null導致的。
https://github.com/walkor/workerman-filemonitor/blob/master/Applications/FileMonitor/start.php#L6
$monitor_dir在這里是一個全局變量,你看看你是不是把它,放入到函數(shù)里變成臨時變量了,導致讀不到$monitor_dir。
@walkor 真的很感謝您,但是我排查了下,還是不能發(fā)現(xiàn)問題!我再提問的時候首先已經(jīng)看了手冊,同時也看論壇相關(guān)回答,但是仍然有問題。。。。。
問題如附件圖片
新的發(fā)現(xiàn):如果我把路徑寫死,可以運行,但是mysql會啟動好多次(圖片5,圖片6)
謝謝!
我看懂群主的意思了。
function a()
{
// 這個聲明是在一個函數(shù)內(nèi)部,是一個局部變量,不是全局變量
$monitor_dir = xxxx;
$worker = new Worker(..);
$worker->onWorkerStart = function(){
global $monitor_dir; // 因為沒有全局變量$monitor_dir,所以這里$monitor_dir是null
....
}
}
我想不行了直接:https://zhidao.baidu.com/question/470552070.html;其次,直接丟 use(外部變量);問題是最后為何reload那么多次