TextProtocol.php 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. <?php
  2. namespace Protocols;
  3. /**
  4. * 以回车为请求结束标记的 文本协议
  5. * 协议格式 文本+回车
  6. * 由于是逐字节读取,效率会有些影响,与JsonProtocol相比JsonProtocol效率会高一些
  7. * @author walkor
  8. */
  9. class TextProtocol
  10. {
  11. /**
  12. * 判断数据边界
  13. * @param string $buffer
  14. * @return number
  15. */
  16. public static function check($buffer)
  17. {
  18. // 判断最后一个字符是否是回车("\n")
  19. if($buffer[strlen($buffer)-1] === "\n")
  20. {
  21. return 0;
  22. }
  23. // 说明还有请求数据没收到,但是由于不知道还有多少数据没收到,所以只能返回1,因为有可能下一个字符就是回车("\n")
  24. return 1;
  25. }
  26. /**
  27. * 打包
  28. * @param mixed $data
  29. * @return string
  30. */
  31. public static function encode($data)
  32. {
  33. // 选用json格式化数据
  34. return $data."\n";
  35. }
  36. /**
  37. * 解包
  38. * @param string $buffer
  39. * @return mixed
  40. */
  41. public static function decode($buffer)
  42. {
  43. return trim($buffer);
  44. }
  45. }