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

workman-json-rpc 調用服務時好時壞,異常recvData empty,不是超時,無報錯!急?。?!

alenshu

第一次接觸workman-json-rpc,調用服務的時候有時候會返回recvData empty,時好時壞。超時時間我設置的15秒,但是每次都很快返回recvData empty,跟蹤代碼,發(fā)現(xiàn)是RpcClient.php文件里的recvData方法,fgets返回false(connection是正確的),請問可能是什么導致的。

3735 3 0
3個回答

walkor 打賞

應該是連接斷開了,一般是業(yè)務代碼發(fā)致命錯誤,或者業(yè)務代碼調用了exit、die導致。
如果發(fā)生致命錯誤會在workerman.log里可以看到錯誤日志。
發(fā)生問題的時候php start.php status 能看到一些信息進程退出碼信息

  • alenshu 2018-12-24

    感恩解答,我看只要出錯,日志里拋出的就是pid:25765 worker[JsonRpc:25871] exit with status 11,翻看到了類似的帖子,這個原因是用了不穩(wěn)定php擴展導致的嗎(裝的擴展沒變,以前一直用的hprose-rpc直接調用的沒有問題),還有可能是其他原因嗎

phpcreeper

你這個問題我也遇到過,還有一種可能就是:
Services里的業(yè)務運行超時了【即超過了?RpcClient::TIME_OUT】,對于RpcClient來說, RpcClient::TIME_OUT意味著服務端的業(yè)務必須在?RpcClient::TIME_OUT 內將數據給我扔回來,否則客戶端會關閉連接。
?

  • alenshu 2018-12-24

    感恩解答,我看錯誤日志里顯示的pid:25765 worker[JsonRpc:25871] exit with status 11,請問這個錯誤碼是因為不穩(wěn)定的php擴展導致的嗎,感謝

  • phpcreeper 2018-12-24

    @5200: exit with status 11 表明進程收到了 SIGSEGV 信號,SIGSEGV代表在POSIX兼容的平臺上,SIGSEGV是當一個進程執(zhí)行了一個無效的內存引用,或發(fā)生段錯誤時發(fā)送給它的信號。
    據此推測最大可能的原因是:
    1、使用了不穩(wěn)定的PHP擴展導致內存泄漏;
    2、程序本身可能導致的內存泄漏,比如使用了類的靜態(tài)數組;

  • alenshu 2018-12-24

    感謝指導,起先還以為以為是zookeeper擴展的問題,刪掉了RpcClient里改造的代碼,后來發(fā)現(xiàn)是因為項目里還繼承了hprose-rpc的service,去掉就好了,感謝感謝

alenshu

狀態(tài)圖如下

  • walkor 2018-12-24

    php 發(fā)生了coredump,可能是用了不穩(wěn)定的php版本,也可能是用了不穩(wěn)定的php擴展

  • alenshu 2018-12-24

    @1:感謝指導,找到了問題,因為項目里還繼承了別的rpc服務端導致的,去掉就好了,還有一個問題。
    我提供的服務不用static也可以正常跑,看文檔上說服務方法也要定義成static,請問如果方法不換成static的會有別的影響嗎

  • walkor 2018-12-24

    沒什么影響??赡軙幸恍┨崾绢惖膒hp日志

  • alenshu 2018-12-25

    @1:感謝

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