問題描述 有一個需求,需要設(shè)置一個定時任務(wù)來獲取用戶的交易數(shù)據(jù)(交易數(shù)據(jù)為第三方接口),由于用戶的數(shù)量不確定,所以要是一個一個來請求獲取并進(jìn)行處理(提取數(shù)據(jù)并寫入到數(shù)據(jù)庫),這樣顯得比較漫長。我在想,有沒有可以在一個進(jìn)程下,開啟多個線程(或者固定幾個線程),這幾個線程幫我來完成這堆用戶的交易數(shù)據(jù)處理? (我有想到過使用parallel來處理,但對于每個用戶的交易數(shù)據(jù)有多有少,導(dǎo)致一次外部請求獲取不完,要多次請求這種情...
問題描述 我使用Workerman\Http\Client來對外請求(并開啟了協(xié)程),我發(fā)現(xiàn)在請求個別網(wǎng)站時會提示has been closed,我在本站和google上搜索與此有關(guān)的問題,有些人說ssl問題,于是我Workerman\Http\ConnectionPool的create中記錄是否關(guān)閉ssl,事實上已關(guān)閉,我嘗試寫一個普通的curl來請求,卻可以拿到數(shù)據(jù),請問是什么回事呢 程序代碼 $http = n...
問題描述 在使用webman做項目時發(fā)現(xiàn)一個關(guān)于中間件向控制器傳參數(shù)的問題,根據(jù)文檔的提示(通過給$request對象添加屬性的方式向控制器傳參),在中間件中我設(shè)置了一個請求id(request_id)(為了可以對比,我使用了Context儲存了request_id),然后在控制器中讀取它,我特意在中間件穿越前輸出到日志,并在控制器上使用Context讀取其值,與$request->request_id作比較并...
問題描述 我嘗試在中間件中使用support\Request(不用Webman\Http\Request的原因就是想在Request類中添加自定義的方法,但又不想改變vendor里面的文件),當(dāng)我use support\Request后重啟webman,卻如下錯誤,請問為何呢?support\Request是繼承Webman\Http\Request,如果我在中間件中用Webman\Http\Request替換掉su...
問題描述 以下為我在中間件添加為request添加一個屬性userlog,當(dāng)我用瀏覽器請求該接口時,如果我請求完一次再請求一次的方式,每次都不報錯,但要是我并發(fā)請求多次,就會提示報錯Error: Call to a member function info() on null in/www/wwwroot/【項目】/app/middleware/GolbalRequest.php:17 備注:開啟了協(xié)程 ##Golb...
問題描述 我使用workman并開啟了協(xié)程,限制只有1個進(jìn)程運(yùn)行,我有一個client類,并使用單例模式來實現(xiàn)全局只有一個請求類,代碼如下,我發(fā)現(xiàn)當(dāng)我用瀏覽器請求這個接口,要是一個接口請求完后再請求接口的方式,每次請求這個接口都可以返回數(shù)據(jù),但要是我并發(fā)請求這個接口,就會報錯Value of type null is not callable,有沒有大佬解釋一下呢? 代碼 <?php ###client...
問題描述 我發(fā)現(xiàn)當(dāng)我頻繁刷新某個接口時,會出現(xiàn)這個問題,請問出現(xiàn)這個問題是什么原因的呢? 報錯信息 Error: Call to undefined method Workerman\Protocols\Http\Request::getRealIp() in /www/wwwroot/[項目]/vendor/workerman/webman-framework/src/Exception/ExceptionHand...
問題描述 在webman中,在一個進(jìn)程中,靜態(tài)變量、(單例)都是所有請求中共享使用,那么有沒有可以做到在僅僅在一個請求中,某個(單例)類可以在這個請求業(yè)務(wù)任意一個地方可以使用,不需要重復(fù)實例化呢(不同請求之間不能互相使用),這個類在這個請求結(jié)束后自動釋放? 舉個例子 1、目前l(fā)og類實例化后(同一個通道),在一個進(jìn)程后就只有一個日志類(全局日志類),但我想在每次寫日志時都要附帶上額外的信息(本次請求的信息【包括我自定...
問題描述 我使用webman并開啟協(xié)程(Workerman\Events\Swoole::class),使用1個進(jìn)程跑,我在support\Request上加了一個getRequestId()和_requestId()的方法,這樣每次請求進(jìn)來,就可以生成一個對應(yīng)的請求id(request_id),這樣我可以在日志上查找關(guān)于某個請求(request_id)究竟發(fā)生了什么事情,然后我做了以下測試(寫在后面),為何會有不同...
問題描述 我使用webman并開啟協(xié)程(Workerman\Events\Swoole::class),我現(xiàn)在模擬并發(fā)請求100次test,按正常來說,我的log2日志文件應(yīng)該有100次【請求進(jìn)來】的日志,但我發(fā)現(xiàn)記錄一部分后會提示log2.WARNING: A possible infinite logging loop was detected and aborted. It appears some of yo...
問題描述 我有一個類order,這個類由于data變量占用內(nèi)存比較大,所以我做成全局類,如果通過workerman實現(xiàn),則如代碼【2】所示,先創(chuàng)建一個全局類,然后在onWorkerStart中更新一次data數(shù)據(jù)(執(zhí)行upBaseData方法),然后定時每30秒更新一次data數(shù)據(jù)(執(zhí)行upBaseData方法),這樣我就可以在onMessage中通過global $golbal_order;方式引入,在任意地方使用...
問題描述 workerman可以在通過[對象和資源的持久化]示例的代碼方式添加,全局類也如此,但我發(fā)現(xiàn)webman好似沒有關(guān)于這個全局類、全局變量如何添加的說明,那webman可以實現(xiàn)嗎(實現(xiàn)全局類、全局變量)?...
問題描述 以下為文檔示例數(shù)據(jù)庫配置代碼,在pool參數(shù)中設(shè)置了最大連接數(shù)(5)、最小連接數(shù)(1),那是不是意味著一個子進(jìn)程中,最多儲存5個數(shù)據(jù)庫連接、最小儲存1個數(shù)據(jù)庫鏈接? return [ // 默認(rèn)數(shù)據(jù)庫 'default' => 'mysql', // 各種數(shù)據(jù)庫配置 'connections' => [ 'mysql' => [ 'driver' ...
問題描述 在例子中,onMessage是一個協(xié)程,從這個協(xié)程進(jìn)入新的協(xié)Coroutine::create,這個新的協(xié)程結(jié)束后返回onMessage協(xié)程,然后通過context獲取user_info是成功,這樣做法與user_info保存到一個變量$user_info中,然后進(jìn)入新協(xié)程,協(xié)程結(jié)束后返回onMessage協(xié)程,照樣拿到$user_info的值,那context方式跟用變量保存方式好像沒什么區(qū)別?有沒有人知...
問題描述 我官方例子中加入onClose回調(diào)屬性,當(dāng)觸發(fā)了onClose,就會在終端中輸出connection closed,但我運(yùn)行后,通過瀏覽器訪問,瀏覽器已經(jīng)請求結(jié)束了,但終端還沒輸出connection closed,直到我按ctrl+z關(guān)閉運(yùn)行,才顯示connection closed,為何會這樣呢 <?php use Workerman\Worker; use Workerman\Connectio...
問題描述 我按照手冊上的例子并且加一些代碼后運(yùn)行,我發(fā)現(xiàn)我通過瀏覽器輸入服務(wù)器地址:6636,終端卻打印2個1,為何會這樣?應(yīng)該請求一次打印一次1 ...
問題描述 我在文檔中了解使用協(xié)程需要PHP >= 8.1、Workerman >= 5.1.0、webman-framework >= 2.1 目前php版本已滿足需求(8.1),workerman/workerman (v5.0.1)、workerman/webman-framework (v1.6.14) 在輸入:composer require workerman/workerman ^v5...
問題描述 命令:composer create-project workerman/webman執(zhí)行后,會提示: 程序代碼 composer create-project workerman/webman 報錯信息 - Root composer.json requires workerman/webman-framework ^2.1, found workerman/webman-framework[dev-m...
我使用寶塔的的版本為9.4.0 Composer 版本為2.1.6 命令【php】為php7.1 命令【php81】為8.1 另外:Composer默認(rèn)使用php7.1,所以我安裝這個workerman時,先進(jìn)入網(wǎng)站根目錄,使用php81 /usr/bin/composer create-project workerman/webman,然后把webman剪切到根目錄 本項目配置如下: Composer: 偽靜態(tài)...