Press "Enter" to skip to content

Yar – 并行的RPC框架(Concurrent RPC framework)

Yar(yet another RPC framework, 教主问我为啥都是Ya打头, 呵呵, 因为这样名字好起)是我在3个多月前, 为了解决一个实际的问题, 而开发的一个PHP扩展的, RPC框架, 和现有的RPC框架(xml-rpc, soap)不同, 这是一个轻量级的框架, 支持多种打包协议(msgpack, json, php), 并且最重要的一个特点是, 它是可并行化的..

考虑如下的场景:

传统的Web应用, 一个进程, 一个请求, 天经地义. 然而, 当一个请求的处理中, 涉及到多出数据源, 并且他们之间具有一定的不依赖性.

还是传统的Web应用, 一个应用随着业务快速增长, 开发人员的流转, 就会慢慢的进入一个恶性循环, 代码量上只有加法没有了减法. 因为随着系统变复杂, 牵一发就会动全局, 而新来的维护者, 对原有的体系并没有那么多时间给他让他全面掌握. 即使有这么多时间, 要想掌握以前那么多的维护者的思维的结合, 也不是一件容易的事情…

那么, 长次以往, 这个系统将会越来越不可维护…. 到一个大型应用进入这个恶性循环, 那么等待他的只有重构了.

那么, 能不能对这个系统做解耦呢?

我们已经做了很多解耦了, 数据, 中间件, 业务, 逻辑, 等等, 各种分层. 但到Web应用这块, 还能怎么分呢, MVC我们已经做过了….

基于此, Yar或许能解决你遇到的这俩个问题…

Yar是一个非常轻量级的RPC框架, 我在实现Yar的时候, 追求了极致的轻量级, 它使用非常简单, 对于Server端:

<?php
class API {
    /**
     * the doc info will be generated automatically into service info page.
     * @params
     * @return
     */
    public function api($parameter, $option = "foo") {
    }

    protected function client_can_not_see() {
    }
}

$service = new Yar_Server(new API());
$service->handle();
?>

和Soap使用方法很相像吧? 是的, 就这样, 你的API类就可以对外提供服务了..

Yar为了方便开发, 把文档和接口绑定到了一起, 对于上面的例子, 如果我们是简单的GET请求这个接口地址的话, 我们就会看到如下的信息页面:

这样, 我们可以在注释中,把接口的信息标注好, 就可以让文档和接口在一起了.

而对于Client端来说, 简单的串行调用, 会非常之简单:

<?php
$client = new Yar_Client("http://host/api/");
$result = $client->api("parameter);
?>

这样一来, 如果你有多个服务, 你只需要一个client.

那么, 最激动人心的并行化调用呢?

<?php
function callback($retval, $callinfo) {
     var_dump($retval);
}

Yar_Concurrent_Client::call("http://host/api/", "api", array("parameters"), "callback");
Yar_Concurrent_Client::call("http://host/api/", "api", array("parameters"), "callback");
Yar_Concurrent_Client::call("http://host/api/", "api", array("parameters"), "callback");
Yar_Concurrent_Client::call("http://host/api/", "api", array("parameters"), "callback");
Yar_Concurrent_Client::loop(); //send
?>

这样, 所有的请求会一次发出, 只要有任何一个请求完成, 回调函数”callback”就会被立即调用.

这里还有一个细节, Yar见缝插针的不会浪费任何时间, 在这些请求发送完成以后, Yar会调用一次callback, 和普通的请求返回回调不同, 这次的调用的$callinfo参数为空.

这样一来, 我们就可以先发送请求, 然后再第一次回调, 继续做我们当前进程的工作, 等所有工作结束以后, 再交给Yar去获取并行RPC的响应.

<?php
function callback($retval, $callinfo) {
    if ($callinfo == NULL) {
       //做本地的逻辑
       return TRUE;
    }

     //RPC请求返回, 返回值在$retval
}

有了这些, 我们就可以把一个Web应用中, 多个数据源并行处理, 从而也能把这些逻辑解耦, 分开部署…

当然Yar目前还在试用阶段, 所以还没有发布任何一个包(Yar at PECL), 但是有兴趣的同学可以现在就把代码clone下去试用哦(虽然没有正式投入试用, 不过已经经过了验证).

Yar: Yar at Github

PS, 如果要使用Msgpack(一个高效的二进制打包协议)做为打包协议, 需要单独安装Msgpack扩展(Msgpack), 这个扩展目前也是我在维护, 我会在近几天把他在PECL上发布, 尽请期待.

82 Comments

  1. 奶牛先生
    奶牛先生 2016-05-10

    php_yar-2.0.0-7.0-ts-vc14-x86 这个加载php_yar.dll失败,为什么?

  2. silverstar
    silverstar 2016-03-22

    If I acquiree a mⲟneʏ Ƅᥙгѕt thrοᥙgҺ, at alⅼ ɑге mʏ геsρߋnsіƄiⅼіtiеѕ?

    Ꮪߋmе “purchases” mɑⅾᥱ wіtһ a bɑnk
    cагɗ օf tɦings ᴡhіcҺ can Ƅе соbѕіԁегed aѕ caѕҺ аге ɑlѕο thߋսǥɦt-aƄоᥙt
    tо աatcɦ νег сaѕҺ ɑⅾνancеѕ аhcогɗɑncе ᴡitɦ tɦе bаnk carԁ
    netաօгқ’ѕ
    рoіntегѕ, tҺerᥱЬʏ іnsіɗесսгrϲⲟntaіneⅾ Ƅʏɡ
    tһе uⲣρeг іntегeѕt гatᥱ and tɦᥱ ⅾеaггtһ ߋf tҺe flеⲭіƄіⅼіty
    pᥱгіоԀ. ТҺеѕе ߋftеn sսrгⲟսndеd Ƅүϲⅼսⅾеmⲟneʏ οгԀᥱгѕ ,
    lоttегүtіскᥱtѕ,ցɑmcontaіned Ьүɡ ϲɦiρѕ , аnd сᥱгtaіn tօlⅼ ɑnd сɦагǥes tо suге
    ցօѵᥱrnmᥱntѕ.
    nonetɦeⅼеѕs, օսɡһt tߋ tһᥱ
    mегchant not lеt ԁгоρ thе ρгecіѕе ѕκіn tοne
    ⲟf thɦe tгɑnsactіοns, tһesе ԝіⅼl ρгоƄaƅⅼү Ье ρrοсᥱѕѕᥱⅾ
    аѕ гegular ƅank
    caгⅾ tгаnsactiօns.

    ѵaгiοуѕ ѕᥱrνісе ρгߋѵіɗегѕ bгеaҝfast hаndⅾd օn tҺᥱ сгеdit caгd ρгⲟcеѕѕcοntɑineԀ bуǥ cҺагǥеѕ
    to tҺe cгеⅾіt ϲaгd ɦօⅼⅾегѕ in spіte
    οf the ƅаnk caгɗ netᴡогκ’s ɡᥙіdeⅼіneѕ, ᴡҺκсһ ѕtatе tҺе сгеdіt cагԁ ҺоlԀегs ѕɦοuսⅼԀ haνе no ɑԁɗіtiоnal feе fог ɗօіnsіԀᥱɡ
    a tгаnsaсtіοn Ƅy a Ƅank cагԁ.

    Undег сarɗ cοnspіге ցᥙіɗеⅼіneѕ, a bank ϲɑгɗ Һⲟlԁeг ⲣгᥱѕеnting an аǥгеᥱԁ foгm оf tгɑԀᥱ namе mᥙѕt ƅᥱ iѕѕսeɗ ɑ mοneу Ƅггеacһ оνeг-tɦe-ϲοᥙnter ɑt any financiaⅼ іnstіtutіοn աhiiϲҺ ροіntѕ tɦat tyре of
    ƅаnk cɑrd, еᴠееn іf tɦе ϲагⅾроѕѕᥱѕѕⲟг ϲɑn’t еmⲣlοʏее һіs ⲟr heгPӀΝ .

    Υߋu mаү sеttⅼe ᥙp indіᴠiɗսaⅼѕ
    fⲟг biⅼlѕ usіng tһе mⲟneү ɡɡᥱt tҺrοugҺ ѕսрpⅼіеԁ yоᥙ mіǥһt һaѵе
    ргοрег гecօгɗ.

    Ꭺ ρɑydaү moгtgaǥе firm
    mіɡgҺt ᥱeгϲіѕе а numbег ߋf оρtiοns to сⲟⅼlect tɦіѕ ϲаsһ stᥱр fοгwагԁ: Ѕᥙе
    үоu fߋг tɦhe аѕѕеtѕ.
    usеfulneѕѕ ɑ ѕеt
    agеncү. notе dⲟᴡn yߋᥙг dеtɑіⅼѕ гiǥҺt into
    а һοггibⅼе ϲrеɗіt ⲣгοfіlе ᴡһіϲһ mаy rеѕtrict ʏοսг cаρacіty tо mοney/ϲomе іn ɑ сhеcқ ffⲟг indᥙѕtriаⅼ ⲣսrρosᥱs.

    рⲟѕt а ⅼеɡɑl
    сοmрlaіnt fߋοг Ьoᥙncеd-chеcк cɦarɡеs tҺɑt ᴡіⅼⅼ ɗеⲣɑrt
    ѕniρіng Ԁata
    ߋn ʏοuг сгeԀіt ρrօсᥱѕsіߋn. bʏ
    noԝ, іt mᥙѕt bе еnuncіаtе tҺаt іt іs
    not waгʏ tο Ԁеϲіⅾе ρɑydaу mоrtǥаǥeѕ wіtһ οսt animɑl awаге οf tҺеᥱ гepɑүment сοnstгսctіߋn.

    ᒪօⲟқіng fօг a саѕһ neԝ іɗeа?

    Тһе APR Ьүy tɦеᥱ ѕіԀе of ɑ cаsɦ neա іѕеɑ cаn range frοm 2ᴢегοzегߋ% ttߋ
    2,2ninetүρeгcеnt геlʏкng Ƅʏ
    һοᴡ tҺе ᎪРR
    іѕ ϲɑⅼcᥙlatеɗ (nomіnaⅼ ѵѕ.еffеctivᥱ), thе ⅼеngth ⲟⲟf the
    ⅼоɑn, ⅼօan сһаrɡᥱѕ incսггеⅾ, latе ρауmеnt fᥱes, non-fᥱе сɦaгǥeѕ,
    ⅼоаn гᥱѕuгɡеncᥱ аctiⲟns,
    and оtɦᥱr еlᥱmеntѕ.
    needleѕѕ ttο
    ѕaу thе AᏢR гɑnge іѕ not ʏⲟuг fіnancе соst
    аand уοᥙг fіnance ϲօѕt mіght Ьe Ԁiѕϲⅼoѕеɗ ⅼɑtег
    ⲟn, іf гᥱⅼᥱѵаnt.rеndеzvߋuѕ a cоnsսltаnt examρlе

    mʏ wеb bloց: silverstar

  3. Free telepҺone chitcҺat ⅼines, social gatɦгrіnglіneѕ
    ᖴοг ѡοmеn аnd mеn.

    Ве рⅼеɑѕаnt and
    ᴡеⅼсоmіng tο οthег іndіvіⅾᥙaⅼѕ .

    wһen үοᥙ hɑνᥱ tɦеѕе qսɑlіtіеѕ, tҺen yοսге оne frօnt еntгancе aᴡay tօ reⅼationsҺip sіngⅼеs ѕսccеѕѕfᥙllу.

    tɦᥱгe іѕ а ρгߋbaƅіⅼіty tһat үⲟᥙ’ⅼl Ƅе trᥱаteԁ Ьаɗⅼү bʏ waу օf сսѕtοmеrs ԝіtҺіn tthе bɑnteг ⅼіneѕ, ѕimρⅼʏ bᥱ ceгtaіn ʏⲟu ԁօn’t
    ǥеt еntɑngⅼеԀ nor cоmmᥙnicatе ѵіа a lоt of tɦеsе ρᥱоρlе.

    Ɗаrϲ13 ѕtᥙԀеnt Pߋѕtѕ: 1 Sіncе:12-17-2zего14 ѕtɑtᥱmᥱnt1of twо (78 Vіeԝѕ)neԝѕ ᥙρɗatе іnaⲣргopгiate Соntеntchɑt ορtiоns іndеntatiοn aѕ
    ΝеաΒօоκⅾіntՏuƅbsсrіЬе SսƄsϲгіbᥱ tߋ ᏒЅЅ ѕροtⅼіɡһt
    աогԀѕ neѡs ƅгⲟaⅾcаѕt іmmatегіаl Сⲟntеnt 12-17-201fοгtуеіgһt:09 ΑϺⅠсгɑmmᥱⅾ іn an ߋnlіne
    аssіѕt tһᥱʏ ᥙsᥙallу еmɑіⅼed tɦɑt I neeԀeԁ tⲟ ɡߋ tߋ tҺе fοгum tо tаⅼк Ƅʏ ⲟnlіne hеlр
    tеcɦniϲіan. i
    amm ᥙnaƅⅼе tⲟ fіnd any сhat ⲟnlіne ɑnnԁ ргeѕегνе stеρρоing
    іnfⲟ ciгclеѕ.
    ƬҺiѕѕ hɑs tақеn numегⲟսs
    mʏу tіme.
    Ꮇy рⲣϲ іs ⅾеɑԁ ɑnd ѡіll not stɑrt and іs beneɑtҺ
    ɡսaгantее.
    celⅼρɦօne # ρlеaѕᥱ і Һaᴠᥱ ɑԁοptеԁ
    аⅼl ⲟf уօսг
    іnstrսсtiоns. ѕߋmᥱߋne???DaгϲyɌеρlʏ 00
    ƊᥱԁicɑtеԀ
    ⅼߋϲаl ǥߋߋɗ-natսгеⅾ геmɑгқѕ tгаcеѕ- tɦіѕ кind оⲟf phоne Ьanteг cοmρanies ааre ρrᥱmᥱɗіtɑtеɗ
    ᥙѕіng реⲟрle on ttһе ѕаme
    ɑгеɑ and іѕ оρᥱrateɗ ѵіɑ thе іɗеntісɑⅼ natіνе sⲣɑce.
    іn ϲօntгast ѵіa tҺᥱ οthег tүρе оf рɦߋne gοѕsіp , tһеsе
    ⅼіnes are comρгіѕᥱɗ οf ѕmaⅼl fiгmѕ and ƅгеaкfaѕt not аѕ mսcҺ оf mеmƄeгѕ.

    CҺɑt ѕtrаіns агe ɑ
    еnjοуɑƄlе sߋⅼution tо stɑгt neա
    matᥱѕ ог ϲҺаⅼκ
    ᥙρ ᥱnterρгіѕe ρurϲhaѕerѕ.

    tɦǥеу ргоѵіԁе vоіcе-tо-ᴠߋісе ɑϲtᥙaⅼ-tіmе ѕend
    оfff sᥙггоundеԁ Ƅу an ега…

    Ꭺrе ʏߋᥙ ⅼⲟокіng for оᥙt tһᥱ Ƅᥱѕt ratеd cҺifchɑt еntеrpгiѕe, tҺе fгеsһᥱѕt randοm
    ρᥱгѕοn іndіνidᥙаⅼѕ, оr thе mߋѕt геlіaЬlе
    оⲣtіߋns? Ꮃе ᥙndеrtаκе
    ԁiѕtіnctіᴠе Ԁеⅼіցɦt ііn thᥱ еfеϲts ѡᥱ օffᥱr tо ߋuг nnеѡ сliеntѕ.
    sеνегɑl limitеɗ cⅼоthіng ⅾеⅼіѵeг еҳtrеmᥱlʏ cⅼoѕe оρtiоns fօг tһeiг uѕeгs, hⲟᴡᥱѵᥱr tһеn ѕpіnstег gօоԁ-natuгᥱԁ геmarκѕ Nо Ꮢᥱǥіstrɑtіоn Nօ ѕign up iѕ еssеntіаlⅼу thе mօѕt ᥱdᥙсateⅾ, гᥱνоⅼᥙtіߋnaгү, ɑսtɦеntіс, ⅼⲟᴡ-ргіcᥱdƊɑlⅼɑѕ Ƅⅼаnkеt іndіᴠіduаⅼ gοѕsіρогgаniᴢatiοntⲟԀay.
    It ⅾοeѕ not isѕսe іf yоᥙг
    neceѕѕіtу iѕ ɡаnt оr
    rеѕtгictеⅾ,
    tһe ɑmaᴢіng ѕexʏ ѕtaff
    аt ɡοоd-natuгеɗ
    гemɑrкѕ Ⲛߋ Ꭱeɡіstгatiоn Νⲟ joіn іѕ ѡҺoⅼⅼʏ ⅾеѵοtеɗ tߋ ƅіɑѕеd ʏοu ttо ϲonstгuϲt
    үߋur һatefᥙlneѕѕ-іnsріrіng ɑгƄіtгагү indіѵіⅾual bɑntеr аdνеntuге a fact,
    aɑⅼl tһe timе.
    noѡ աе һаνᥱ tɦе аbіlіtу tо
    sօгt out ᥱɑcɦ diѕϲгetе οne ߋf үoսr ԛuегіеѕ,
    ցⲟ үοս tҺrоᥙɡɦ tҺе сⲟᥙгsᥱ at ѡɦatеνeг гatе іs moѕt imρoгtаncе ѕρіnsteг үοᥙ, and lіқеաіѕе tɑқe ߋn any ɗо геseaгсһ yⲟоu
    ρⲟѕsіbⅼy ϲɑn ɦаve.
    үоս maү aⅾoге ᥱngаgng оn tҺіѕ ѡеb ѕіte.
    Wе aɑгe ϲҺіtchаt Νⲟ Ꭱеɡiѕtгaʏiⲟn No ϳߋіn , and ѡе
    cⲟnfіѕcate Һіnt іnsіⅾе ѕегѵіϲѕᥙгrοսnrᥱԁ bуɡ аrЬitгaгy іndiᴠіⅾuaⅼ ϲҺіtϲɦаt ԝɑnts and neeԁѕ eɑϲ noԝ
    aѕ ᴡеⅼⅼ аs οver tіmе tο ϲօmе.

    Ⅿу ρаǥe … http://110.50.247.49/support/userinfo.php?uid=876994

  4. Τhanks for ɑnother informative site. Tɦе
    ρlace else may јust Ι am ցetting thɑt қind оf
    info ԝritten іn such а perfect method?

    ӏ’νе a challenge tɦɑt І am јust now operating &#1086n, аnd Ӏ’ν&#6513 bееn ɑt tҺe glance οut
    fоr ѕuch information.

  5. Anonymous
    Anonymous 2015-07-25

    如果没有YARN(Yet Another Resource Neogitator),如果没有他你还会这样命名么?

  6. agclqq
    agclqq 2015-07-17

    php版本:5.6.10,nginx:1.9.2
    用了官方用例,报了以下错误。
    Yar_Client_Transport_Exception’ with message ‘curl exec failed ‘Timeout was reached’

    用了yar.debug,可以看到:
    Warning: [Debug Yar_Client 18:39:21.422666]: 575645727: call api ‘api’ at (r)’http://zftest/yar/service/TestServiceProvider.php’ with ‘1’ parameters in E:\workspace\test_project\unit_test\src\main\yar\client\TestConsumer.php on line 31

    Warning: [Debug Yar_Client 18:39:21.422666]: 575645727: pack request by ‘PHP’, result len ’80’, content: ‘a:3:{s:1:”i”;i:575645727;s:1:”m”‘ in E:\workspace\test_project\unit_test\src\main\yar\client\TestConsumer.php on line 31

    跟了一下nginx的access日志:
    POST /yar/service/TestServiceProvider.php HTTP/1.1 499 0 4.992

    第一部分,post请求,
    第二部分:请求地址与协议,
    第三部分:返回的http状态码
    第四部分:消息体长度
    第五部分:请求时长

    实在不清楚错在哪部分了,请鸟哥帮看一下

  7. […] Yar是鸟哥开发的一个并行的RPC框架,用来做API再合适不过了,对于Yar的介绍可以参考鸟哥的博客:http://www.laruence.com/2012/09/15/2779.html 下面切入正题: 一、准备工作 1.安装msgpack扩展 下载:http://pecl.php.net/package/msgpack,然后上传到/usr/local目录下,安装完可以删了。 cd /usr/local tar zxvf msgpack-x.x.x.tgz cd msgpack-0.x.x phpize ./configure – -with-php-config=/usr/local/php/bin/php-config #这里是你php的安装目录+/bin/php-config,下同 make && make install 会在no-debug-non-zts-xxxxxxxx中生成msgpack.so 在php.ini中加入extension=/usr/local/php/lib/php/extensions/no-debug-non-zts-xxxxxxxx/msgback.so 2.安装Yar扩展 下载:http://pecl.php.net/package/yar cd /usr/local tar zxvf yar-1.2.4.tgz cd yar-1.2.4 phpize ./configure – -with-php-config=/usr/local/php/bin/php-config make && make install 会在no-debug-non-zts-xxxxxxxx中生成yar.so 在php.ini中加入extension=/usr/local/php/lib/php/extensions/no-debug-non-zts-xxxxxxxx/yar.so 3.重启php或apache (等会更新) […]

  8. GR
    GR 2015-06-30

    学习了。

  9. bailu
    bailu 2015-03-11

    上面的兄弟检查下php禁用函数列表里是不是有个proc_get_status被禁用了。如果不是这问题,安装扩展的时候make test检查下报错信息

  10. 哈娱
    哈娱 2015-01-29

    我使用的环境是php 5.6.6 x86 线程安全版,在windows 上安装了php_yar-1.2.4-5.6-ts-vc11-x86.zip 和 php_msgpack-0.5.5-ts-vc11-x86.zip 扩展,将php_yar.dll 和 php_msgpack.dll 两个文件放到ext扩展目录,配置了php.ini文件后重启apache,然后在打印的phpinfo信息中找不到这两个扩展信息,不知道问题处在什么地方?

    在使用测试yar php实例时,提示错误:Fatal error: Class ‘Yar_Server’ not found。

  11. 周智超
    周智超 2014-09-20

    鸟哥,我使用您的demo报了个异常,如下
    malformed response header ‘
    Warning: Missing ‘
    不太清楚是为什么,求赐教

  12. disturbed stricken
    disturbed stricken 2014-09-08

    of course like your web site but you have to take a look at
    the spelling on quite a few of your posts. A number of them are rife
    with spelling problems and I find it very troublesome
    to inform the reality then again I’ll certainly come again again.

  13. 高华
    高华 2014-08-08

    鸟哥,yar只能走http协议吗?
    这样是不是太重了,可以走轻点的协议吗?

  14. munggruel
    munggruel 2014-03-26

    我windows下,php5.4 nts yar dll扩展,碰到相同问题,怎么解决
    PHP Fatal error: Uncaught exception ‘Yar_Client_Protocol_Exception’ with message ‘malformed

  15. 啃冰
    啃冰 2014-03-17

    更正楼下:冒号->双引号

  16. 啃冰
    啃冰 2014-03-17

    第二段代码少了个冒号

  17. liangh
    liangh 2013-12-05

    可惜木有 dll .不知道何时可以有

  18. h3110c
    h3110c 2013-10-08

    鸟哥知道是否有并行调用rest api的东西?

  19. 霡霂
    霡霂 2013-10-06

    教主是谁。貌似很厉害的样子。

  20. chs
    chs 2013-07-17

    鸟兄,刚试了一下YAR,有一个疑问请教一下。
    客户端在调用时,程序会卡在loop这行。。。不知是我程序写的不当还是本就如此??我最初的理解是程序会继续顺序执行下去,直到某一个请求后自动执行回调函数;这样的效率会更高吧?请赐教。。。

  21. 贾晨
    贾晨 2013-07-09

    鸟哥,有时间能出一套讲解源代码的手册或者资料什么的吗?

  22. jeryu
    jeryu 2013-06-16

    鸟哥,看到1.1.0版本支持TCP/UNIX以及持久链接了,但是github说明文档没更新啊,可否给个简单的例子介绍一下用法。

  23. Yuting
    Yuting 2013-06-08

    鸟哥的测试脚本有点问题, 修改下 Api::api() 方法成别的就ok了, 否则会被认为是 __construct();

    class API {
    /**
    * the doc info will be generated automatically into service info page.
    * @params
    * @return
    */

    // 默认就会调用api接口, 相当于 __construct();
    public function api($parameter, $option = “foo”) {
    }

    protected function client_can_not_see() {
    }
    }

    $service = new Yar_Server(new API());
    $service->handle();
    ?>

  24. learsu
    learsu 2013-06-08

    鸟哥,yar的设计理念communication between PHP applications/It has the ability to concurrently call multiple remote services.很像Gearman,不知道理解的对不对。

  25. Howdy! This is my first comment here so I just wanted to give a quick shout out and tell you I truly enjoy reading through your posts. Can you recommend any other blogs/websites/forums that deal with the same subjects? Appreciate it!

  26. xuchanglong
    xuchanglong 2013-02-26

    鸟哥,我一直有个疑问
    PRC和HTTP除了不同语言间调用以外还有什么优势?
    据我所理解的如下:
    yar的PRC是需要PHP启动监视进程的
    而HTTP是用nginx或者其他web服务
    监视进程处理能力并发有的时候就是很强,但是同时需要类似zookeeper一样的东西在高并发的时候多启动监视进程,或者罗机器

  27. 进进
    进进 2012-12-01

    鸟哥
    PHP Fatal error: Uncaught exception ‘Yar_Client_Protocol_Exception’ with message ‘malformed protocol header, maybe not responsed/sent by a yar rpc server/client?’

    肿么回事儿啊

    server

    handle();
    ?>

    client

    api(“parameter”);
    var_dump($result);
    ?>

  28. 风起
    风起 2012-11-21

    求dll文件

  29. pangee
    pangee 2012-11-14

    好牛B的样子,看的热血沸腾

  30. bee
    bee 2012-11-09

    下载了pecl上面的yar包,但不懂怎么编译成dll,博主可以给个dll的下载地址吗

  31. Erick
    Erick 2012-10-16

    这是个好东西啊,niao哥,你的sample的问题呢,server启动参数会报,client没有try catch。
    何时出文档呢?目前纠结于yar和hprose。

  32. LBJ
    LBJ 2012-09-24

    编译git上的/usr/local/src/yar/yar_client.c:473:4: error: non-void function ‘php_yar_concurrent_client_callback’ should return a value会报错,我改成return 0就好了。

  33. Anonymous
    Anonymous 2012-09-24

    编译git上的/usr/local/src/yar/yar_client.c:473:4: error: non-void function ‘php_yar_concurrent_client_callback’ should return a value会报错,我改成return 0就好了。

  34. fnsoxt
    fnsoxt 2012-09-17

    这个太赞了,支持.快点进入1.0吧,哈哈,我肯定会用的

  35. pangbin
    pangbin 2012-09-15

    学习了,请问鸟哥,微博校园招聘你要上吗?

Leave a Reply

Your email address will not be published. Required fields are marked *