国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Gearman 使用小知識(shí)

ideaa / 1090人閱讀

摘要:目前項(xiàng)目采用的是來實(shí)現(xiàn)異步任務(wù)。關(guān)于介紹通俗的來說是一個(gè)分發(fā)任務(wù)的程序框架使用的應(yīng)用通常有三部分組成一個(gè)一個(gè)一個(gè)任務(wù)服務(wù)器。的作用是提出一個(gè)任務(wù)交給任務(wù)服務(wù)器。請(qǐng)求的調(diào)度者,用來負(fù)責(zé)協(xié)調(diào)把發(fā)出的請(qǐng)求轉(zhuǎn)發(fā)給合適的。

眾所周知,PHP要實(shí)現(xiàn)異步任務(wù)一般都是通過 Gearman Beanstalkd 等第三方來實(shí)現(xiàn)的。目前項(xiàng)目采用的是 Gearman 來實(shí)現(xiàn)異步任務(wù)。

關(guān)于Gearman介紹

通俗的來說

Gearman是一個(gè)分發(fā)任務(wù)的程序框架,使用Gearman的應(yīng)用通常有三部分組成:一個(gè)Client、一個(gè)Worker、一個(gè) 任務(wù)服務(wù)器。 Client的作用是提出一個(gè) Job 任務(wù) 交給 Job Server 任務(wù)服務(wù)器。Job Server 會(huì)去尋找一個(gè) 合適的 Worker 來完成這項(xiàng)任務(wù)。

Gearman官方網(wǎng)站地址 Gearman官網(wǎng)

關(guān)于Gearman 安裝和使用 請(qǐng)參考 Gearman安裝和使用

PHP使用Gearman

Gearman 請(qǐng)求過程中 涉及的三個(gè) Client -> Job -> Worker

Client 請(qǐng)求的發(fā)起者,可以是C,PHP,Perl,MySQL UDF等等。

Job:請(qǐng)求的調(diào)度者,用來負(fù)責(zé)協(xié)調(diào)把Client發(fā)出的請(qǐng)求轉(zhuǎn)發(fā)給合適的Work。

Worker:請(qǐng)求的處理者,可以是C,PHP,Perl等等。

在這個(gè)過程中 work要長(zhǎng)駐后臺(tái)時(shí)刻準(zhǔn)備著被jobserver調(diào)用來處理job,所以worker不能死掉

PHP使用Gream實(shí)例(多帶帶函數(shù)實(shí)現(xiàn))
client.php
addServer("127.0.0.1", 4730);
    $client->doBackground("say","hello world");
work.php
addServer("127.0.0.1", 4730);
     $worker->addFunction("say", "hello");
     while ($worker->work());
     function hello () {
         //DO SOMETHING...
     }

以上即是 PHP 調(diào)用 Gearman 簡(jiǎn)單的示例。

在我們實(shí)際的開發(fā)過程中,一般會(huì)采用框架進(jìn)行項(xiàng)目的開發(fā),如果采用以上方式進(jìn)行調(diào)用,肯定會(huì)破壞項(xiàng)目原有的文件結(jié)構(gòu)。 以下以ThinkPHP 3.2 版本進(jìn)行DEMO演示,調(diào)用方式跟單文件調(diào)用沒什么區(qū)別,區(qū)別在于 work的編寫。

因?yàn)?work需要長(zhǎng)駐后臺(tái)運(yùn)行,所以我們要聲明文件以 CLI 模式運(yùn)行。即:

方式一:

 "XXXX",
            "port" => "XXX"
        );
        public function __construct () {
            $sapi = php_sapi_name();
            if ($sapi != "cli") {
                exit();
            }
        }
        
        protected function add_work ($job,$func) {
            $worker= new GearmanWorker();
            $worker->addServer($this->$_config["host"], $this->$_config["port"]);
            $worker->addFunction($job, $func);
            while ($worker->work());
        }
        
        public function test () {
            $this->add_work("say","SysControllerDemoController ::say");
        }
        
        static public function say ($job) {
            $data = $job->workload();
            //DO SOMETHING...
        }
    }
    

方式二:

 "XXXX",
            "port" => "XXX"
        );
        public function __construct () {
            $sapi = php_sapi_name();
            if ($sapi != "cli") {
                exit();
            }
        }
        
        protected function add_work ($job,$func) {
            $worker= new GearmanWorker();
            $worker->addServer($this->$_config["host"], $this->$_config["port"]);
            $worker->addFunction($job, $func);
            while ($worker->work());
        }
        
        public function test () {
            $this->add_work("say","SysControllersay");
        }
    }
    
    function say ($job) {
        $data = $job->workload();
        //DO SOMETHING.....
    }

添加work到后臺(tái) 格式為 /var/www/index.php Sys/Demo/test

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/21098.html

相關(guān)文章

  • Gearman的安裝和使用

    摘要:?jiǎn)?dòng)和如下信息則表示成功查看版本安裝擴(kuò)展從下載最新擴(kuò)展需下載最新源碼包,并解壓縮安裝安裝成功后信息然后,配置文件增加內(nèi)容重啟后,出現(xiàn)如下信息則表示安裝擴(kuò)展成功。 首發(fā)于 樊浩柏科學(xué)院 Gearman 是一個(gè)分布式任務(wù)分發(fā)系統(tǒng),通過程序調(diào)用(API,跨語(yǔ)言)分布式地把工作委派給更適合做某項(xiàng)工作的機(jī)器,且這些機(jī)器可以以并發(fā)的、負(fù)載均衡的形式來共同完成某項(xiàng)工作。當(dāng)計(jì)算密集型場(chǎng)景時(shí),適合在后...

    U2FsdGVkX1x 評(píng)論0 收藏0
  • JAVA通過Gearman實(shí)現(xiàn)MySQL到Redis的數(shù)據(jù)同步(異步復(fù)制)

    摘要:但是這需要對(duì)文件以及有非常深入的理解,同時(shí)由于存在多種形式,分析實(shí)現(xiàn)同步的工作量是非常大的。因此這里選擇了一種開發(fā)成本更加低廉的方式,借用已經(jīng)比較成熟的,將數(shù)據(jù)首先放入中,然后通過一個(gè)自己編寫的,將數(shù)據(jù)同步到。此類連接遠(yuǎn)程的。 MySQL到Redis數(shù)據(jù)復(fù)制方案 無論MySQL還是Redis,自身都帶有數(shù)據(jù)同步的機(jī)制,像比較常用的 MySQL的Master/Slave模式 ,就是由Sl...

    doodlewind 評(píng)論0 收藏0
  • PHP異步操作(swoole, gearman)

    摘要:異步操作廢話不說直接進(jìn)入正題應(yīng)用場(chǎng)景業(yè)務(wù)邏輯中經(jīng)常會(huì)出現(xiàn)發(fā)送信息發(fā)送郵件記錄日志等等這個(gè)時(shí)候用異步再好不過了用戶直接的體驗(yàn)就是使用的賊流暢使用技術(shù)這個(gè)不僅僅支持了其他語(yǔ)言也支持有的擴(kuò)展用起來更方便感覺上異步隊(duì)列不同點(diǎn)有個(gè)隊(duì)列專門用來存儲(chǔ)發(fā)送 PHP異步操作 廢話不說直接進(jìn)入正題: 應(yīng)用場(chǎng)景: 業(yè)務(wù)邏輯中經(jīng)常會(huì)出現(xiàn)發(fā)送信息,發(fā)送郵件,記錄日志等等,這個(gè)時(shí)候用異步再好不過...

    Fundebug 評(píng)論0 收藏0
  • 利用 Gearman 實(shí)現(xiàn)系統(tǒng)錯(cuò)誤報(bào)警功能

    摘要:文件分發(fā)針對(duì)用戶上傳的文件,進(jìn)行多臺(tái)服務(wù)器分發(fā)。系統(tǒng)報(bào)警當(dāng)系統(tǒng)出現(xiàn)問題的時(shí)候,第一時(shí)間通知相關(guān)人。這篇文章主要講解系統(tǒng)報(bào)警場(chǎng)景在開發(fā)系統(tǒng)的過程中,往往程序會(huì)出現(xiàn)這樣,那樣的問題。所以,使用實(shí)現(xiàn)短信,郵件的異步發(fā)送。也可以用來實(shí)現(xiàn)上面的需求。 Gearman 是什么? Gearman是一個(gè)用來把工作委派給其他機(jī)器、分布式的調(diào)用更適合做某項(xiàng)工作的機(jī)器、并發(fā)的做某項(xiàng)工作在多個(gè)調(diào)用間做負(fù)載均衡...

    IntMain 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<