linux nohup守護程序
阿新 • • 發佈:2018-11-16
前端js程式碼
var wsUrl = "ws://www.whl.com:9501"; var websocket = new WebSocket(wsUrl); //例項物件的onopen屬性 websocket.onopen = function(evt) { console.log(11111111); websocket.send("hello-sinwa"); console.log("conected-swoole-success"); } // 例項化 onmessage websocket.onmessage = function(evt) { console.log("ws-server-return-data:" + evt.data); } //onclose websocket.onclose = function(evt) { console.log("close"); } //onerror websocket.onerror = function(evt, e) { console.log("error:" + evt.data); }
後端php 程式碼
$server = new swoole_websocket_server("0.0.0.0", 9501); $server->on('open', function (swoole_websocket_server $server, $request) { $redis = new \Redis(); //連線 $redis->connect('127.0.0.1', 6379); $redis->sAdd('all_fd' , $request->fd); echo "long-server: handshake success with fd{$request->fd}".PHP_EOL; }); $server->on('message', function (swoole_websocket_server $server, $frame) { echo "long-receive from {$frame->fd}:{$frame->data},opcode:{$frame->opcode},fin:{$frame->finish}".PHP_EOL; $redis = new \Redis(); $redis->connect('127.0.0.1', 6379); $all_fd=$redis->sMembers('all_fd'); foreach ($all_fd as $v){ $server->push($v, "this is server"); } }); $server->on('close', function ($ser, $fd) { $redis = new \Redis(); //連線 $redis->connect('127.0.0.1', 6379); $redis->sRem('all_fd' , $fd); // 移除容器中的TK echo "long-client {$fd} closed".PHP_EOL; }); $server->start();
後臺守護進行
nohup php websocket.php >/dev/null 2>&1 &
檢視程序
ps -aux |grep "php websocket.php"
殺死程序
kill -9 22234
5. 開機自啟
通過前面的步驟,我們知道如何開啟和關閉一個php程序,但是,在實際的應用中,我們不可能每次都是手動開啟,這樣我們就會損失掉一部分業務資料,所以我們必須要讓該程序開機自動執行,步驟如下:
在/etc/rc.local檔案中,將nohup php websocket.php >/dev/null 2>&1 &這個命令加入即可。
6.當然swoole沒這麼麻煩。只要在set方法加 'daemonize' => 1即可,這裡只是提供參照對比一下是不是能達到同樣的效果