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
- Linux使用Ambari啟動服務啟動失敗Linux
- 14、Workerman案例1-Http服務HTTP
- Fastadmin(thinkphp5)安裝整合workerman(gatewayworker)Linux環境ASTPHPGatewayLinux
- 使用node啟動一個簡單的服務
- python 啟動http服務PythonHTTP
- linux 下啟動服務Linux
- gitblit 服務啟動不了Git
- Python使用socket的UDP協議實現FTP檔案服務PythonUDP協議FTP
- Kali Linux常用服務配置教程啟動DHCP服務Linux
- 怎麼啟動postgresql服務SQL
- mongodb服務在哪裡啟動?MongoDB
- 控制linux啟動的服務Linux
- windows下啟動nacos服務Windows
- 服務啟動一個程式
- dubbo服務啟動的方式
- DUBBO服務啟動過程
- 啟動與關閉服務
- centos 自動啟動指令碼和自啟動服務CentOS指令碼
- laravel使用workerman 使用者互動、伺服器互動Laravel伺服器
- Ubuntu Server 24.04 自啟動服務UbuntuServer
- node.js啟動http服務Node.jsHTTP
- sqlserver服務啟動失敗-1067SQLServer
- Window下啟動/停止Zookeeper服務
- Nuxt動態ip啟動開發服務UX
- Systemd 服務:比啟動停止服務更進一步
- windows 系統下 workerman 在同一個執行視窗中開啟多個 websocket 服務WindowsWeb
- systemctl 命令在 Linux 中啟動、停止和重新啟動服務Linux
- openstack 啟動認證服務錯誤
- windows 服務執行啟動桌面程式Windows
- Linux怎麼知道服務是否啟動?Linux
- Linux 如何啟動mail郵件服務LinuxAI
- 本地啟動服務的三種方法
- docker compose 服務啟動順序控制Docker
- shell監控服務程式是否啟動
- 在Linux中,如何啟動、停止或重啟服務?Linux
- CentOS7中使用systemctl列出啟動失敗的服務CentOS
- win10開啟自動更新服務設定方法 window10如何開啟自動更新服務Win10