Nfcserver.php 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. <?php
  2. use Workerman\Worker;
  3. use think\App;
  4. use think\Db;
  5. // ######## 消息队列消费者 ########
  6. $consumer = new Worker();
  7. // 慢任务,消费者的进程数可以开多一些
  8. $consumer->count = 1;
  9. //进程启动
  10. $consumer->onWorkerStart = function($consumer)
  11. {
  12. App::initCommon();
  13. //创建socket套接字
  14. $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
  15. //设置阻塞模式
  16. socket_set_block($socket);
  17. //为套接字绑定ip和端口
  18. socket_connect($socket,'127.0.0.1',2346);
  19. //监听socket
  20. socket_listen($socket,4);
  21. while(true)
  22. {
  23. //接收客户端请求
  24. if(($msgsocket = socket_accept($socket)) !== false)
  25. {
  26. //读取请求内容
  27. $buf = socket_read($msgsocket, 8192);
  28. echo "Received msg: $buf \n";
  29. $str = "this is a service message";
  30. //向连接的客户端发送数据
  31. socket_write($msgsocket, $str,strlen($str));
  32. //操作完之后需要关闭该连接否则 feof() 函数无法正确识别打开的句柄是否读取完成
  33. socket_close($msgsocket);
  34. }else{
  35. echo 37;
  36. }
  37. }
  38. };
  39. $consumer->onMessage = function($consumer){
  40. echo date('Y-m-d H:i:s');
  41. sleep(1);
  42. };
  43. //进程关闭
  44. $consumer->onWorkerStop = function($consumer)
  45. {
  46. restore_error_handler();
  47. };