国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

求業(yè)務(wù)邏輯拆分比較好的實(shí)現(xiàn)方式

z54123321

在onMessage中把業(yè)務(wù)邏輯拆分出來比較好的實(shí)現(xiàn)方式是什么?

在同一進(jìn)程中,如何做到連接之間不相互污染數(shù)據(jù)?

================================
剛剛測(cè)試了一下同一個(gè)進(jìn)程中在其中的一個(gè)連接發(fā)送阻塞標(biāo)識(shí)信息,執(zhí)行for600W次的file_put_contents寫入操作,其他連接發(fā)送消息會(huì)被掛起,甚至?xí)霈F(xiàn)超時(shí),

process_timeout:
#1 /data/gateway/gateway/vendor/workerman/workerman/Events/Select.php(263): pcntl_signal_dispatch()
#2 /data/gateway/gateway/vendor/workerman/workerman/Worker.php(2231): Workerman\Events\Select->loop()
#3 /data/gateway/gateway/vendor/workerman/gateway-worker/src/BusinessWorker.php(197): Workerman\Worker->run()
#4 /data/gateway/gateway/vendor/workerman/workerman/Worker.php(1356): GatewayWorker\BusinessWorker->run()
#5 /data/gateway/gateway/vendor/workerman/workerman/Worker.php(1188): Workerman\Worker::forkOneWorkerForLinux(Object(GatewayWorker\BusinessWorker))
#6 /data/gateway/gateway/vendor/workerman/workerman/Worker.php(1162): Workerman\Worker::forkWorkersForLinux()
#7 /data/gateway/gateway/vendor/workerman/workerman/Worker.php(1490): Workerman\Worker::forkWorkers()
#8 /data/gateway/gateway/vendor/workerman/workerman/Worker.php(1439): Workerman\Worker::monitorWorkersForLinux()
#9 /data/gateway/gateway/vendor/workerman/workerman/Worker.php(480): Workerman\Worker::monitorWorkers()
#10 /data/gateway/gateway/start.php(37): Workerman\Worker::runAll()

這樣一來是不是我們無須考慮高并發(fā)帶來的同一進(jìn)程中的多個(gè)鏈接在業(yè)務(wù)流程中的數(shù)據(jù)污染,因?yàn)橥粫r(shí)間同一個(gè)進(jìn)程永遠(yuǎn)在處理一個(gè)連接的業(yè)務(wù)?是不是可以這樣理解?

4497 1 1
1個(gè)回答

walkor 打賞

單個(gè)進(jìn)程里業(yè)務(wù)代碼是串行執(zhí)行的,業(yè)務(wù)代碼都是在函數(shù)/類方法中運(yùn)行,執(zhí)行過程中產(chǎn)生的臨時(shí)變量在函數(shù)/類方法執(zhí)行完畢后會(huì)自動(dòng)釋放,不會(huì)有多個(gè)業(yè)務(wù)代碼并發(fā)執(zhí)行同時(shí)訪問更改進(jìn)程內(nèi)某變量的情況。

但是全局變量以及類的靜態(tài)成員存儲(chǔ)的數(shù)據(jù)默認(rèn)不會(huì)被自動(dòng)系統(tǒng)釋放,所以多個(gè)連接的多個(gè)請(qǐng)求可以共享全局變量以及類的靜態(tài)成員存儲(chǔ)的數(shù)據(jù),但是也不會(huì)出現(xiàn)多個(gè)業(yè)務(wù)代碼并發(fā)訪問的情況,仍然是順序執(zhí)行,進(jìn)程內(nèi)的所有變量不用考慮并發(fā)問題。

雖然單個(gè)進(jìn)程內(nèi)部業(yè)務(wù)代碼是串行執(zhí)行,無并發(fā)訪問問題,但是多個(gè)進(jìn)程的業(yè)務(wù)代碼是并發(fā)執(zhí)行的(進(jìn)程間的變量是隔離的,變量同樣沒有并發(fā)訪問問題),但是要注意多個(gè)進(jìn)程讀寫外部存儲(chǔ)(mysql/redis)的并發(fā)問題。

  • z54123321 2018-07-05

    那么對(duì)于全局變量和靜態(tài)成員變量的初始化和send后的數(shù)據(jù)重置應(yīng)該就可以正常使用吧?還是說更加建議使用類實(shí)例化操作來避免萬一忘記重置靜態(tài)變量成員數(shù)據(jù)出錯(cuò)?感覺有點(diǎn)選擇強(qiáng)迫癥- -

  • walkor 2018-07-05

    正常使用。沒有必要都實(shí)例化。靜態(tài)成員變量一般用來記錄全局性的東西,一般不用重置

  • z54123321 2018-07-06

    @1:好的 謝謝大大

年代過于久遠(yuǎn),無法發(fā)表回答
??