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

關(guān)于webman使用fastcgi_finish_request函數(shù)的類似效果的方案

wgole

問題描述

有時(shí)候處理請(qǐng)求時(shí)需要快速響應(yīng)用戶,而把慢業(yè)務(wù)繼續(xù)留在進(jìn)程里執(zhí)行,就像php-fpm使用fastcgi_finish_request函數(shù)就能達(dá)到這個(gè)效果。我知道webman是php進(jìn)程處理請(qǐng)求,我想問用webman有沒有這種類似的處理慢業(yè)務(wù)方案?

除了文檔里提到的使用 隊(duì)列、慢業(yè)務(wù)進(jìn)程等方案,還有其他方案嗎?

為此你搜索到了哪些方案及不適用的原因

文檔里提到的使用 隊(duì)列、慢業(yè)務(wù)獨(dú)立進(jìn)程等方案,這些會(huì)增加程序設(shè)計(jì)復(fù)雜度。

本來一個(gè)簡簡單單的需求增加了復(fù)雜度。我只想在當(dāng)前控制器里處理對(duì)應(yīng)的慢業(yè)務(wù),同時(shí)也能快速響應(yīng)用戶的請(qǐng)求。傳統(tǒng)的php-fpm使用fastcgi_finish_request()后,后面再寫慢業(yè)務(wù)代碼,這樣就能完美解決問題。

案例1:
收到支付回調(diào)(如微信、支付寶等)時(shí),驗(yàn)證成功并保存數(shù)據(jù)庫支付表后就要馬上把處理結(jié)果響應(yīng)回去,而后續(xù)的其他操作再慢慢執(zhí)行,例如,后續(xù)處理通知游戲發(fā)放元寶、記錄日志等操作,這些常常因?yàn)榈谌骄W(wǎng)絡(luò)、服務(wù)器問題,或者IO問題導(dǎo)致處理速度比較慢。

在php-fpm項(xiàng)目中我基本都這樣操作的:

register_shutdown_function(['Util', 'shutdown_function'], null, [], true);

//Util class...
public static function shutdown_function($func, $params = [], $end = false)
{
    static $stack = [];
    if ($func) {
        $stack[] = [
            'func' => $func,
            'params' => $params
        ];
    }

    if ($end) {
        function_exists('fastcgi_finish_request') && fastcgi_finish_request();

        foreach ($stack as $v) {
            call_user_func_array($v['func'], $v['params']);
        }
    }
}
423 4 0
4個(gè)回答

胡桃

Workerman現(xiàn)在沒有FileAsync組件,后續(xù)的操作一樣堵著,多開幾個(gè)進(jìn)程就行了

  • 暫無評(píng)論
tanhongbin

fastcgi_finish_request 如果返回用戶信息成功了,但是 后續(xù)的業(yè)務(wù)處理失敗了 怎么搞???隊(duì)列是最保險(xiǎn)的,而且你項(xiàng)目不用redis嘛? 如果用就是 一個(gè)命令安裝包的事,你這種異步 太危險(xiǎn)了 數(shù)據(jù)容易丟失

  • wgole 2024-12-11

    需要異步的情況下,一般都不是很重要的東西,處理失敗就失敗了,況且丟失的概率很低,只有進(jìn)程突然停掉才會(huì)丟失。

  • tanhongbin 2024-12-11

    還是隊(duì)列靠譜 而且fpm的異步 就是個(gè)笑話,生產(chǎn)都不會(huì)用的,數(shù)據(jù)量一上來 fpm就趴下了

nitron

我以前開皮卡,要多裝貨物就加一個(gè)拖掛就好,現(xiàn)在我開跑車了,請(qǐng)問多裝貨物怎么加拖掛

six

用定時(shí)器,效果和 fastcgi_finish_request 一樣

use Workerman\Timer;
Timer::add(0.001, function(){}, [], false);

建議慢業(yè)務(wù)用隊(duì)列,fastcgi_finish_request 這種機(jī)制都不適合運(yùn)行太慢的業(yè)務(wù),會(huì)影響正常業(yè)務(wù)請(qǐng)求。

  • wgole 2024-12-11

    我倒沒想到這個(gè)方法,確實(shí)能達(dá)到異步效果

??