背景 前天3月29號,剛準(zhǔn)備吃飯,手機(jī)上收到了系統(tǒng)上一個(gè)Error Alert提示,打開進(jìn)去看原來是出現(xiàn)一次重試超時(shí),后面是正常的。然后無意跳去看一下所有服務(wù)總覽頁面,發(fā)現(xiàn)另一個(gè)服務(wù)有幾個(gè)error,于是進(jìn)入詳情,發(fā)現(xiàn)一直提示“驗(yàn)證碼637592發(fā)送失敗,data not accepted”。 業(yè)務(wù)邏輯 以上報(bào)錯(cuò)來自一個(gè)郵件推送服務(wù),利用webman+rabbitmq(采用的workerman/rabbitmq)做的...
由于laravel12發(fā)布,webman文檔中數(shù)據(jù)庫安裝命令 composer require -W webman/database illuminate/pagination illuminate/events symfony/var-dumper 會因?yàn)閣ebman/database依賴illuminate/database10和11版本,而命令illuminate/pagination illuminate/e...
我想在微信小程序中也使用websocket,就用了官方手冊的webman/push(https://github.com/webman-php/push )的包,期間遇到了各種問題,好在都解決了,我根據(jù)官方庫中的push-uniapp.js版本,改造出了微信小程序原生版本的,但是由于對webman/push 包的不熟悉,也因此引發(fā)了一些bug,順帶發(fā)現(xiàn)了webman/push實(shí)現(xiàn)上的小小瞎呲(個(gè)人以為)。 我自己的f...
環(huán)境信息 操作系統(tǒng)win11 php 8.4.1 webman-framework ^1.6.8 MySQL 8.4.3 topthink/think-orm ^3.0 說明 大佬留言PHP8.3以下版本 直接使用webman提供的webman/think-orm更方便、健全(見文末的留言)。 PHP 環(huán)境換為 8.4 使用webman/think-orm 報(bào)了個(gè)錯(cuò);所以換topthink/think-orm,...
軟件版本 "php": ">=7.2", "workerman/webman-framework": "^1.5.0", 問題情景 使用“分組路由”做API接口 前后端分離跨域,在接口測試工具調(diào)試是能正常獲取數(shù)據(jù)的;但在網(wǎng)頁瀏覽器上調(diào)試就遇到了CORS、404的錯(cuò)誤;錯(cuò)誤的路由代碼如下: Route::group('/w', function () { Route::post('/v/list', ...
在composer個(gè)別庫中,會include配置文件,在調(diào)用時(shí)會重復(fù)include,并且不會釋放內(nèi)存,導(dǎo)致實(shí)際業(yè)務(wù)不復(fù)雜,但是循環(huán)之后內(nèi)存占滿進(jìn)程被kill掉。分享一下這個(gè)過程,開發(fā)時(shí)要留意。 pinyin.php: <?php return [ 'key1' => 'value1', ]; demo.php: <?php $list = []; // 假設(shè)這里有10萬條數(shù)據(jù)庫記錄要處理...
webman-admin 的一鍵菜單功能非常的好用,但是仍然有些許不太方便的地方,例如,默認(rèn)會先創(chuàng)建2個(gè)時(shí)間字段,后續(xù)一鍵生成代碼時(shí),時(shí)間字段會在表頭的最前面,這C位怎么能讓它倆占據(jù)呢,所以,今天列表拖拽它來了 先來簡單的看看效果圖 通過在表單屬性中直接拖拽行 就能實(shí)現(xiàn)排序啦,用起來還是比較貼心的。 首先請出我們的核心工具 layui-soul-table 這是基于layui框架的一個(gè)第三方拖拽插件,用起來相...
博客園的事情簡單說下: 主要原因是百度的蜘蛛把博客園的服務(wù)給爬垮了,就是服務(wù)down了,原來的k8s+ .net扛不住了,導(dǎo)致百度給博客園降權(quán)了,流量只有原來的十分之一左右,流量不行,廣告業(yè)務(wù)也不行了,如果早點(diǎn)重構(gòu)或許被降權(quán)這是就不會發(fā)生了,好像這事也處理的也不好,炮轟百度的蜘蛛爬蟲了的死亡螺旋爬行,得罪了百度一些相關(guān)人員。 總結(jié):本身百度蜘蛛有問題,但是服務(wù)扛不住,導(dǎo)致博客園正常運(yùn)營出現(xiàn)問題,博客園炮轟百度蜘蛛問題...
webman分頁要安裝分頁組件,很方便了。但每次用的時(shí)候都要實(shí)例化Paginator,還要去修改分頁器的樣式(默認(rèn)Bootstrap)。但還是總覺得有點(diǎn)麻煩。 利用think-template的擴(kuò)展模板標(biāo)簽庫免實(shí)例化Paginator 1、視圖使用think-template composer require topthink/think-template 2、修改配置config/view.php為 <?ph...
先說明新建的三個(gè)文件都是干嘛的 GlobalData.php 使用了 GlobalData變量共享組件 HealthCheck.php 按照設(shè)定的時(shí)間做健康檢查 Proxy.php 代理設(shè)置,需要將后臺的代理改成這里的設(shè)置 使用Composer添加一些依賴 composer require workerman/globaldata composer require guzzlehttp/guzzle 在 ...
前言 今年接觸了一個(gè)策略類手游相關(guān)的項(xiàng)目,后端本身計(jì)劃是使用skynet進(jìn)行開發(fā)的,后來結(jié)合項(xiàng)目的時(shí)間緊急程度和客戶端開發(fā)組討論后決定使用PHP進(jìn)行快速開發(fā),后期再使用其他語言框架進(jìn)行拆分業(yè)務(wù);綜合考慮最后選用了webman作為主要開發(fā)框架。 整體項(xiàng)目分為配置服務(wù)、http-api服務(wù)、websocket服務(wù)三大部分,其中配置管理主要是兼容客戶端生成的配置數(shù)據(jù)進(jìn)行導(dǎo)入導(dǎo)出轉(zhuǎn)換加載,底層使用MySQL進(jìn)行儲存,多服務(wù)間...
通常,很多人都是在控制器里直接調(diào)用view()方法渲染視圖文件,因?yàn)楹芏嗫蚣芏际沁@么干的,于是大家都這么干了,但這種方式并不好,使得view與controller極度耦合。 webman中的controller沒有傳遞request對象,使得代碼寫起來有些繁瑣,基本每個(gè)action要傳遞request,但如果在construct中傳遞request,就可以這么寫: protected $request; ...
webman-framework/src/App.php幾處性能優(yōu)化(建議官方修改) 不是雞蛋里挑骨頭,webman本身就是出于對性能的追求,所以應(yīng)要該精于求精,改進(jìn)任何不太合理的地方。 guessControllerAction(...)這個(gè)方法,在foreach循環(huán)中用了array_merge,array_merge這個(gè)方法性能并不是很好,另一個(gè)問題是進(jìn)行了兩次foreach循環(huán),實(shí)際只需要一次,看對比圖。 ...
看了webman框架性能介紹,有點(diǎn)垂涎,于是著手體驗(yàn)一下,但有些地方與自己的架構(gòu)思維不太符合,還發(fā)現(xiàn)了一些性能問題,在此分享如何修改和優(yōu)化。 如何修改框架源碼? 直接去修改源文件的代碼這種方式不可取,因?yàn)楣俜缴壓蟛缓猛剑膊缓脤Ρ任募薷牧耸裁吹胤?,所以最好的方式是利用composer加載方式,重新創(chuàng)建一個(gè)目錄,把源碼文件復(fù)制到新建目錄里進(jìn)行修改,最后利用自己創(chuàng)建的autoload加載文件,具體流程如下: 在...
鑒于之前的老版本是純 Bash 寫的,擴(kuò)展性不是很好,而且里面的庫、擴(kuò)展無法及時(shí)使用最新版,所以一怒之下重寫了整個(gè)編譯項(xiàng)目。新版本支持舊版本的所有擴(kuò)展,同時(shí)也新增了很多擴(kuò)展。 https://github.com/crazywhalecc/static-php-cli 新版本可以手動本地在 Linux(Debian、Ubuntu、RHEL、CentOS 等主流發(fā)行版)、Windows、Alpine Linux、mac...
PHP版本設(shè)置為“純靜態(tài)” 反向代理設(shè)置 目標(biāo)URL: http://0.0.0.0:8787 webman后臺啟動 php ./start.php start -d ...
目前我的PHP版本是8.1,在限制同一設(shè)備只能一個(gè)登錄時(shí),調(diào)用Gateway::sendToCurrentClient或Gateway::sendToClient發(fā)送給第二個(gè)同類設(shè)備,第二個(gè)同類設(shè)備再在Events類中查找同一個(gè)帳號其他設(shè)備,并通過Gateway::sendToUid發(fā)送時(shí)數(shù)據(jù)為null導(dǎo)致報(bào)如下錯(cuò)誤。 雖然最后在發(fā)送之前加上判斷,防止發(fā)送數(shù)據(jù)為null。同時(shí)也說明vendor\workerman\g...
把ThinkPHP的官方文檔擼了3遍以上,Webman擼了兩邊,再加上實(shí)際項(xiàng)目的開發(fā)和對比,才有的本文章,希望能幫到大家,如有錯(cuò)誤和疏漏請不吝賜教~ 1、webman內(nèi)存常駐,業(yè)務(wù)執(zhí)行只有3個(gè)流程(框架接收請求、框架執(zhí)行業(yè)務(wù)邏輯、框架將結(jié)果返回給客戶端);TP業(yè)務(wù)流程從 nginx/apache接收請求 到 php-fpm初始化環(huán)境,如創(chuàng)建變量列表 到 框架初始化(載入 Composer 的自動加載 autoload...
PushService PushService 是一個(gè)推送服務(wù)平臺,客戶端基于訂閱模式,兼容?pusher,創(chuàng)建應(yīng)用信息即可快速使用。 使用 webman + GatewayWorker 開發(fā)實(shí)現(xiàn) 客戶端連接、應(yīng)用管理、數(shù)據(jù)統(tǒng)計(jì)、訂閱發(fā)布數(shù)據(jù)等。 項(xiàng)目地址 https://github.com/hsk99/push-service 安裝 composer安裝 創(chuàng)建項(xiàng)目 composer create-proj...
認(rèn)識 webman 我們公司項(xiàng)目一直使用的 Laravel,部分項(xiàng)目也可能會用到 laravels(swoole),所以我對于 workerman 的關(guān)注少之又少。我平時(shí)本來就比較習(xí)慣逛 LearnKu,也是在今年上半年看到了一篇關(guān)于介紹 webman 的帖子,這才知道 walkor 老大居然出了一個(gè)基于 workerman 的web框架,一下子就來了興趣,各種翻論壇看相關(guān)帖子,哈哈(就喜歡研究新玩意兒??)。但是由于...