亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在codeinighter框架中,怎么直接斷開客戶端的連接?

在codeinighter框架中,怎么直接斷開客戶端的連接?

幕布斯6054654 2019-04-13 08:46:28
假設有個用戶發文章的場景。一個用戶表,一個類別表,一個文章表,文章表有個user_id關聯用戶表,一個category_id關聯類別表。用mysql的數據庫,沒有做外鍵約束。當用戶發布一篇文章的時候,我需要去更新類別表的post_count字段,表示這個類別下有多少篇文章之類的。因為考慮到數據完整性要求不那么高,所以我這里沒放在一個事務中去更新兩張表的數據,而是分別去更新每張表的數據。我希望能夠在插入文章表之后就返回給客戶端,創建成功的信息,斷開與客戶端的連接,然后再完成后續更新類別表的post_count字段。lz之前是寫python的,tornado框架就有個概念叫is_finish,標明當前與客戶端的連接是否已經斷開了,不知道codeinighter里面有沒類似的概念呢?或者說怎么樣主動斷開與客戶端的連接?PS:lz也不知道這種不用事務的做法是不是不太合適,沒真實在產品環境上跑過.....
查看完整描述

2 回答

?
陪伴而非守候

TA貢獻1757條經驗 獲得超8個贊

http是無狀態協議,PHP是URL驅動的腳本語言,沒有守護進程,不支持異步。
用戶訪問一個PHP頁面,一般情況下,Apache會單開一個進程來處理這個頁面,處理完畢進程退出,nginx會發送一個請求給一個PHP守護進程,同樣的,會新開一個進程或線程,處理完畢立刻退出。
如果想異步,可以用redis等存儲隊列、另開守護進程處理隊列。
根據題主的情況,建議一次完成。
                            
查看完整回答
反對 回復 2019-04-13
?
喵喔喔

TA貢獻1735條經驗 獲得超5個贊

你說的應該是指返回數據后,php再繼續在后臺處理剩余數據,你這個需求在php中應該實現不了,php這門語言在http通信結束后,就會回收當前通信過程中使用到的所有局部變量,所以你這個需求很有可能實現不了。
其實你的這個需求是屬于異步處理,這是node.js的強項。
                            
查看完整回答
反對 回復 2019-04-13
  • 2 回答
  • 0 關注
  • 348 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號