公司有 Im 項(xiàng)目,用的技術(shù)棧是 GatewayWorker,查看了文檔和源碼,簡(jiǎn)單做下總結(jié)。 GatewayWorker 是什么? GatewayWorker基于 Workerman 開(kāi)發(fā)的一個(gè)項(xiàng)目框架,用于快速開(kāi)發(fā)TCP長(zhǎng)連接應(yīng)用,例如app推送服務(wù)端、即時(shí)IM服務(wù)端、游戲服務(wù)端、物聯(lián)網(wǎng)、智能家居等。 GatewayWorker 與 Workerman 的關(guān)系? GatewayWorker 是基于 Workerm...
擴(kuò)展 視圖類 class LayoutRaw extends Raw { public static function render(string $template, array $vars, ?string $app = null, ?string $plugin = null, ?string $layout = null): string { $request = reques...
<?php // include composer autoload require 'vendor/autoload.php'; use Intervention\Image\ImageManager; $manager = new ImageManager(); /** * 根據(jù)指定的目錄循環(huán)遍歷里面的圖片文件轉(zhuǎn)換成webp格式并刪除原始文件 * @param $path * @param $m...
在pandaman中擴(kuò)展了中間件的功能 > 框架不設(shè)內(nèi)置加載,全部按需加載,路徑位置。全靠自定義 > 使用方法 類似springboot的攔截器,可以根據(jù)地址進(jìn)行攔截操作。這種方式 // 注冊(cè)一個(gè)啟動(dòng)器 #[AsBoot] class AdminMiddlewareRegister { // 中間件注冊(cè)注入 public function boot(MiddlewareRegistry $re...
在路由文件處這樣寫(xiě) use Webman\Route; Route::disableDefaultRoute(); require(base_path() . "/route/admin.php"); require(base_path() . "/route/api.php"); 然后創(chuàng)建 route 目錄 use Webman\Route; // 需要登錄 Route::group('/admin', fu...
分享一個(gè)最方便的PHP時(shí)間助手類, 這個(gè)類庫(kù)的最大特色是:所有方法都可傳入任意類型的時(shí)間格式&時(shí)間戳 通過(guò)Composer導(dǎo)入類庫(kù) composer require zjkal/time-helper 使用方法 首先在類中引用TimeHelper助手類 use zjkal\TimeHelper; 1. 獲取需要的秒數(shù) 一般用于設(shè)置緩存時(shí)間,設(shè)置結(jié)束時(shí)間等 //返回到今天晚上零點(diǎn)之前的秒數(shù) TimeHelper...
演示環(huán)境:centos7.6 創(chuàng)建一個(gè)shell腳本 touch /home/start.sh 寫(xiě)入項(xiàng)目啟動(dòng)命令 #!/bin/bash php /home/webman/start.php start -d 賦予start.sh執(zhí)行權(quán)限 chmod +x /home/start.sh 修改/etc/rc.local文件,添加/home/start.sh 到文件最后一行 vi /etc/rc.lo...
protected $is_export = false;//是否開(kāi)啟導(dǎo)出 protected $exportName = '';//導(dǎo)出excel名稱 protected $exportField = '';//導(dǎo)出excel名稱 public function create() { if(!$this->is_export) $this->error('未開(kāi)啟導(dǎo)出'); ...
結(jié)合帖子分享,成功安裝,總結(jié)如下 1.安裝webman composer create-project workerman/webman 2.webman框架升級(jí),安裝console,webman安裝 composer require workerman/webman-framework ^1.4.0 && composer require webman/console ^1.0.27 &&a...
最近我遇到一個(gè)需求,我的一臺(tái)服務(wù)器總是遭到端口掃描和惡意登錄攻擊,對(duì)此可以怎么辦呢?似乎除了內(nèi)網(wǎng)隔離、增強(qiáng)密碼認(rèn)證、證書(shū)登錄、設(shè)置防火墻iptables,網(wǎng)上找不到什么別的方案,對(duì)了,還用堡壘機(jī)的方案。 這些方案實(shí)際上都無(wú)法解決我的問(wèn)題。這是一臺(tái)公網(wǎng)服務(wù)器,并沒(méi)有什么復(fù)雜的網(wǎng)絡(luò)結(jié)構(gòu),所以不能建立內(nèi)網(wǎng)隔離。調(diào)整賬號(hào)的密碼策略,自然是一個(gè)方案,但是人工操作太麻煩,而且我一般經(jīng)常換電腦使用,如果修改密碼,公司的和家里的電腦...
關(guān)于workerman支持的版本: 根據(jù)老大的Merge情況來(lái)看,最小的版本可能是 version >= 4.0.40,協(xié)議實(shí)現(xiàn)請(qǐng)參考: https://github.com/walkor/workerman/pull/784 為什么新增FastCGI協(xié)議支持? 首先源于問(wèn)答社區(qū)里一個(gè)久遠(yuǎn)的帖子: http://wtbis.cn/q/1806 貼近workerman的應(yīng)用生態(tài),因?yàn)樵瓉?lái)很多...
workbunny/process 我在做非常輕量的任務(wù)調(diào)度服務(wù)的時(shí)候剛好順帶擼了一下PHP多進(jìn)程相關(guān)的內(nèi)容,總共寫(xiě)了不到300行代碼,能夠幫助理解workerman是如何進(jìn)行多進(jìn)程處理的; 已經(jīng)做了一些測(cè)試用例,把基本上常規(guī)的操作都覆蓋了,隨后還會(huì)補(bǔ)充更多的測(cè)試做覆蓋; 另外說(shuō)一下,這玩意兒其實(shí)可以用在workerman/webman里,當(dāng)然這種操作比較騷(不建議,畢竟這是進(jìn)程不是線程); 可以進(jìn)行進(jìn)程的嵌套for...
webman不要使用 Redis:select 命令, 選擇了庫(kù)之后所有的請(qǐng)求都會(huì)走這個(gè)庫(kù),血的教訓(xùn)...
這個(gè)客戶端不是開(kāi)源的,想了解具體實(shí)現(xiàn)原理的,可與我溝通。 簡(jiǎn)單小巧,但核心特性健全 客戶端基于純 C + GTK3 實(shí)現(xiàn) - 魔性; 服務(wù)端基于 workerman 實(shí)現(xiàn) - 絲滑; 客戶端和服務(wù)端均支持各大知名網(wǎng)絡(luò)事件庫(kù); 客戶端基于 GNOME/GLIB 家族的多線程模型實(shí)現(xiàn); TCP網(wǎng)絡(luò)連接即使斷開(kāi)也支持花式報(bào)警; 報(bào)警事件可能會(huì)帶來(lái)一些啟示,花式玩法就不介紹了,這個(gè)得自己發(fā)揮了,原本只是想支持下語(yǔ)音播報(bào)。 ...
【1】深入workerman信號(hào)機(jī)制 這個(gè)話題是本人《深入PHP內(nèi)核源碼》視頻教程里的一個(gè)插錄環(huán)節(jié),剖析擴(kuò)展源碼的細(xì)節(jié)移步B站。 【2】研究背景 workerman內(nèi)核實(shí)現(xiàn)有依賴PCNTL擴(kuò)展,這是因?yàn)樯婕暗叫盘?hào)編程,其中局部依賴了pcntl_signal()和 pcntl_signal_dispatch() 這兩個(gè)函數(shù),至今社區(qū)對(duì)這個(gè)話題的討論熱度依舊不減,但是這種機(jī)制有個(gè)缺陷:性能倒不低,主要是需要用戶空間不斷的...
Pear Admin Webman 項(xiàng)目簡(jiǎn)介 Pear Admin Webman 基于 webman + Pear Admin Layui 開(kāi)發(fā) 項(xiàng)目地址 https://github.com/hsk99/webman-admin 功能介紹 應(yīng)用監(jiān)控 服務(wù)異常通知 管理員 角色權(quán)限 權(quán)限控制 一鍵CRUD 菜單管理 日志管理 文件管理 系統(tǒng)設(shè)置 表單生成 OSS存儲(chǔ) 七牛云存儲(chǔ) 安裝配置 composer...
論壇:https://laravel-workerman.iwnweb.com/d/11-php-pack-unpack pack 文檔:https://www.php.net/manual/en/function.pack.php unpack 文檔:https://www.php.net/manual/en/function.unpack.php PHP中pack、unpack的詳細(xì)用法:https://segm...
select是自帶的 select 需要只是會(huì)提醒你有新的事件觸發(fā),至于具體事件,你需要自己foreach 判斷 socket fd 默認(rèn)情況下,select可管理的fd的數(shù)量是1024個(gè) select每次檢測(cè)到fd集合中有可讀寫(xiě)的fd時(shí),它會(huì)把整個(gè)fd全部復(fù)制一遍給你,然后你自己再去逐個(gè)輪詢究竟是哪個(gè)fd可讀寫(xiě) epoll (兩種模式:水平觸發(fā) || 邊緣觸發(fā)) 理論上可以搞定無(wú)上限的fd 只挑出可讀寫(xiě)(...
限流類(Throttler)提供了一種非常簡(jiǎn)單的方法,可以將用戶要執(zhí)行的活動(dòng)限制為在設(shè)定的時(shí)間段內(nèi)只能進(jìn)行一定次數(shù)的嘗試。 這最常用于對(duì) API 進(jìn)行速率限制,或限制用戶針對(duì)表單進(jìn)行的嘗試次數(shù),以幫助防止暴力攻擊。 該類可用于你根據(jù)設(shè)置的時(shí)間來(lái)進(jìn)行限制的操作。 插件地址: http://wtbis.cn/plugin/36 限流類 全局中間件,整個(gè)應(yīng)用接口限流, 路由中間件,某些功能接口請(qǐng)求速率...