test.php 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. <?php
  2. require dirname(dirname(__FILE__)).'/vendor/autoload.php';
  3. require_once dirname(dirname(__FILE__)) . '/vendor/workerman/Autoloader.php';
  4. require_once dirname(dirname(__FILE__)) . '/vendor/mysql/src/Connection.php';
  5. require_once __DIR__ . '/config.php';
  6. use Workerman\Worker; //worker容器类
  7. use Workerman\Connection\AsyncTcpConnection; //连接异步客户端
  8. use Workerman\MySQL\Connection; //连接数据库的类
  9. use Workerman\Lib\Timer; //定时器函数
  10. use Monolog\Logger;
  11. use Monolog\Handler\StreamHandler;
  12. use Monolog\Handler\ErrorLogHandler;
  13. $task = new Worker();
  14. // 进程启动时异步建立一个到www.baidu.com连接对象,并发送数据获取数据
  15. $task->onWorkerStart = function($task)
  16. {
  17. global $mark;
  18. $mark = true;
  19. // 不支持直接指定http,但是可以用tcp模拟http协议发送数据
  20. $connection_to_baidu = new AsyncTcpConnection('tcp://127.0.0.1:12345');
  21. // 当连接建立成功时,发送http请求数据
  22. $connection_to_baidu->onConnect = function($connection_to_baidu)
  23. {
  24. echo "connect success\n";
  25. $connection_to_baidu->send('{"type":"ping"}' . "\n");
  26. };
  27. $connection_to_baidu->onMessage = function($connection_to_baidu, $http_buffer)
  28. {
  29. var_dump($http_buffer);
  30. };
  31. $connection_to_baidu->onClose = function($connection_to_baidu)
  32. {
  33. var_dump($connection_to_baidu);
  34. //$connection_to_baidu->reConnect();
  35. echo "connection closed\n";
  36. };
  37. $connection_to_baidu->onError = function($connection_to_baidu, $code, $msg)
  38. {
  39. //$connection_to_baidu->reConnect();
  40. echo '111';
  41. echo "Error code:$code msg:$msg\n";
  42. };
  43. $connection_to_baidu->connect();
  44. // 发送给 webserver 服务器 心跳=====================================================
  45. Timer::add(10, function () use ($connection_to_baidu) {
  46. global $mark;
  47. $connection_to_baidu->close();
  48. $mark = false;
  49. });
  50. /* Timer::add(11, function () use ($connection_to_baidu) {
  51. $connection_to_baidu->onConnect = function($connection_to_baidu)
  52. {
  53. echo "connect success\n";
  54. $connection_to_baidu->send('{"type":"ping"}' . "\n");
  55. };
  56. $connection_to_baidu->onMessage = function($connection_to_baidu, $http_buffer)
  57. {
  58. var_dump($http_buffer);
  59. };
  60. $connection_to_baidu->onClose = function($connection_to_baidu)
  61. {
  62. echo "connection closed\n";
  63. };
  64. $connection_to_baidu->onError = function($connection_to_baidu, $code, $msg)
  65. {
  66. echo "Error code:$code msg:$msg\n";
  67. };
  68. $connection_to_baidu->connect();
  69. });*/
  70. };
  71. // 运行worker
  72. Worker::runAll();