初用workerman和gatewayworker框架,有幾個問題想請教一下:
建立mysql和redis連接的時候,是不是必須都要放在Events.php的onWorkerStart中?
如果和業(yè)務(wù)相關(guān)的操作不放在onMessage中,那放在哪里呢?請看我貼的偽代碼,我的業(yè)務(wù)主要就是接收硬件發(fā)送過來的16進(jìn)制數(shù)據(jù),然后存入redis和mysql,設(shè)備之間不需要通訊,只需要正確無誤的把數(shù)據(jù)存入數(shù)據(jù)庫就行,會頻繁與數(shù)據(jù)庫打交道,所有業(yè)務(wù)邏輯都寫onMessage中了,請問這樣寫是否合理呢?
沒有找到gatewayworker默認(rèn)的日志存放在哪,如果框架有些異常,我該去哪查看…
?
[attach]1340[/attach]
?
1.建立mysql和redis連接的時候,是不是必須都要放在Events.php的onWorkerStart中?
?
建議放在onWorkerStart中,只初始化一次然后復(fù)用連接。但是實際上沒有限制,你可以workerman啟動后任意位置初始化數(shù)據(jù)庫連接
?
2.如果客戶端之前不需要通訊,用workerman即可。
onMessage只是入口,和我們平時開發(fā)php一樣,index.php是入口,業(yè)務(wù)邏輯可以分發(fā)給其它文件的類處理。
例如?
<?php
$worker = new Worker('websocket://0.0.0.0:8787');
$worker->onMessage = function($connection, $data){
//$data類似'{"class":"user", "method":"login", "params":}';
$data = json_decode($data, true);
$class = new $data;
$method = $data;
$params = $data;
call_user_func_array($class, $method, $params);
};
Worker::runAll();
這樣利用php類的自動加載(要自己寫個autoload規(guī)則),就可以把業(yè)務(wù)分發(fā)給不同的類文件處理了
?
3.沒有找到gatewayworker默認(rèn)的日志存放在哪,如果框架有些異常,我該去哪查看…
?
框架只關(guān)注socket通訊,沒有做業(yè)務(wù)框架,也沒有業(yè)務(wù)的日志類,可以自己根據(jù)需要加載其它業(yè)務(wù)類去處理業(yè)務(wù)??蚣茏陨碛袀€workerman.log,默認(rèn)在workerman目錄平行的位置,里面會記錄一些啟動 停止 以及一些致命報錯,但是不是給業(yè)務(wù)的日志類。
?
明白了,感謝!
業(yè)務(wù)日志肯定是我自己記錄設(shè)置的,但是框架自身的日志我沒找到,【框架自身有個workerman.log,默認(rèn)在workerman目錄平行的位置,里面會記錄一些啟動 停止 以及一些致命報錯】。我用的gatewayworker,這個workerman.log我沒找到。