defer_client.php 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. <?php
  2. /* new multi implement test */
  3. $server = new Swoole\Http\Server("127.0.0.1", 9502, SWOOLE_BASE);
  4. $server->set([
  5. 'worker_num' => 1,
  6. ]);
  7. $server->on('Request', function ($request, $response) {
  8. $redis = new Swoole\Coroutine\Redis();
  9. $res = $redis->connect('127.0.0.1', 6379);
  10. if ($res == false) {
  11. $response->end("Redis connect fail!");
  12. return;
  13. }
  14. $redis->setDefer(true);
  15. $redis->get('key');
  16. $res = $redis->get('key');//get false
  17. var_dump($res);
  18. var_dump($redis->setDefer());//get true
  19. var_dump($redis->setDefer(false));//get false
  20. //穿插其他client也能正常工作
  21. $redis_tmp = new Swoole\Coroutine\Redis();
  22. $res = $redis_tmp->connect('127.0.0.1', 6379);
  23. if ($res == false) {
  24. $response->end("Redis connect fail!");
  25. return;
  26. }
  27. $res = $redis_tmp->set('key_tmp', 'HaHa');//get true
  28. var_dump($res);
  29. $http_client= new Swoole\Coroutine\Http\Client('km.oa.com', 80);
  30. $http_client->setDefer();
  31. $http_client->get('/');
  32. $mysql = new Swoole\Coroutine\MySQL();
  33. $res = $mysql->connect(['host' => '192.168.244.128', 'user' => 'mha_manager', 'password' => 'mhapass', 'database' => 'tt']);
  34. if ($res == false) {
  35. $response->end("MySQL connect fail!");
  36. return;
  37. }
  38. $mysql->setDefer(true);
  39. $mysql->query('select sleep(1)', 2);
  40. $udp = new Swoole\Coroutine\Client(SWOOLE_SOCK_UDP);
  41. $res = $udp->connect("127.0.0.1", 9906, 2);
  42. $udp->send('Hello World!');
  43. //穿插其他client也能正常工作
  44. $udp_tmp = new Swoole\Coroutine\Client(SWOOLE_SOCK_UDP);
  45. $res = $udp_tmp->connect("127.0.0.1", 9909, 2);//nonexistent server
  46. $res = $udp_tmp->recv();//get false with timeout
  47. var_dump($res);
  48. $udp_res = $udp->recv();
  49. $res = $mysql->query('select sleep(1)', 2);//get false
  50. var_dump($res);
  51. $res = $mysql->setDefer(false);
  52. var_dump($res);//get false
  53. $res = $mysql->setDefer();
  54. var_dump($res);//get true
  55. $mysql_res = $mysql->recv();
  56. $res = $redis->get('key');//get false
  57. var_dump($res);
  58. $redis_res = $redis->recv();
  59. $res = $http_client->get('/');
  60. var_dump($res);//get false
  61. $res = $http_client->recv();
  62. var_dump($res);//get true
  63. var_dump($udp_res, $mysql_res, $redis_res, $http_client);
  64. var_dump($http_client->setDefer(false));
  65. var_dump($mysql->getDefer(), $redis->getDefer(), $http_client->getDefer());
  66. $response->end('Test End');
  67. });
  68. $server->start();