thinkphp5使用Workerman啟動udp服務
1. 安裝(composer)
composer require topthink/think-worker
如果是在window下還需要安裝workerman/workerman-for-win
(然後刪掉vendor\workerman\workerman)
composer require workerman/workerman-for-win
2. 新增啟動檔案在tp5根目錄server.php內容如下
<?php
/**
* Created by PhpStorm.
* User: pandeng
* Date: 2017-08-07
* Time: 10:50
*/
define('APP_PATH', __DIR__ . '/application/');
define('BIND_MODULE','index/Worker');
// 載入框架引導檔案
require __DIR__ . '/thinkphp/start.php';
新增服務處理類在controller下建立\index\controller\Worker.php 程式碼如下
<?php
namespace app\index\controller;
use think\worker\Server;
class Worker extends Server
{
protected $socket = 'udp://0.0.0.0:2346';
/**
* 收到資訊
* @param $connection
* @param $data
*/
public function onMessage($connection, $data)
{
echo $data;
$connection->send($data);
}
/**
* 當客戶端的連線上發生錯誤時觸發
* @param $connection
* @param $code
* @param $msg
*/
public function onError($connection, $code, $msg)
{
echo "error $code $msg\n";
}
/**
* 每個程式啟動
* @param $worker
*/
public function onWorkerStart($worker)
{
echo "onWorkerStart___";
}
}
3. 新增.pid檔案(啟動時候報錯file_get_contents(/data/project/tp5project/vendor/workerman/workerman/../_data_project_tp5project_server.php.pid): 需要操作此步驟)
在centos7下啟動服務的時候沒有自動建立.pid檔案,固需要手動新增這個空檔案
/data/project/tp5project/vendor/workerman/_data_project_bomei_server.php.pid
4. 修改php.ini(啟動時報錯:stream_socket_server() has been disabled for security reasons需要修改)
/usr/local/php/etc/php.ini
找到disable_functions 這行去掉stream_socket_server
disable_functions = passthru,exec,system,chroot,scandir,chgrp,chown,shell_exec,proc_open,proc_get_status,popen,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru
5. 新增udp所需埠
firewall-cmd --zone=public --add-port=2346/udp --permanent
firewall-cmd --reload
如果用的阿里雲伺服器需要在安全策略新增開放2346埠
6. 啟動
php server.php start
相關文章
- workerman 服務
- Laravel使用Command引導啟動 workerman(websocket)LaravelWeb
- 14、Workerman案例1-Http服務HTTP
- oracle手動啟動服務Oracle
- gitblit 服務啟動不了Git
- linux 下啟動服務Linux
- 服務啟動一個程式
- 怎麼啟動postgresql服務SQL
- mongodb服務在哪裡啟動?MongoDB
- windows下啟動nacos服務Windows
- centos 自動啟動指令碼和自啟動服務CentOS指令碼
- Kali Linux常用服務配置教程啟動DHCP服務Linux
- Ubuntu 下啟動/停止/重啟mysql服務UbuntuMySql
- 控制linux啟動的服務Linux
- Android 啟動和停止服務Android
- node.js啟動http服務Node.jsHTTP
- Nuxt動態ip啟動開發服務UX
- 【MySql】開機自動啟動mysql服務MySql
- windows下啟動服務時不啟動oracle例項WindowsOracle
- laravel使用workerman 使用者互動、伺服器互動Laravel伺服器
- Python使用socket的UDP協議實現FTP檔案服務PythonUDP協議FTP
- windows 系統下 workerman 在同一個執行視窗中開啟多個 websocket 服務WindowsWeb
- 使用python實現memcached的啟動服務指令碼rcPython指令碼
- shell監控服務程式是否啟動
- 深入淺出Netty:服務啟動Netty
- centos 服務開機啟動設定CentOS
- Oracle監聽服務無法啟動Oracle
- Flask 原始碼剖析——服務啟動篇Flask原始碼
- shell編寫服務啟動指令碼指令碼
- fedora core 啟動服務詳解(zt)
- solaris啟動ftp和telnet服務FTP
- gcdn京東服務+啟動“春節不打烊”,用好服務陪你過好年GC
- win10開啟自動更新服務設定方法 window10如何開啟自動更新服務Win10
- 3.1.3 關於資料庫服務自動啟動資料庫
- Oracle TNSListener服務啟動後自動停止問題Oracle
- oracle10g_自動啟動服務指令碼Oracle指令碼
- sqlserver服務啟動失敗-1067SQLServer
- Linux 如何啟動mail郵件服務LinuxAI