Worker会不会同时被两客户端访问?

不会。

单例模式写法导致数据一直存在是为什么?

因为easyswoole是常驻内存的,static使用的时候要注意时机释放,详细文档请见:《swoole_server中内存管理机制》

用了很多第三方类库都存在有$_GET$_POST等超全局变量,而swoole默认情况下值是空的怎么办?

可以在Event.php里的OnRequest方法里对超全局变量进行赋值。

  1. $_GET = isset( $request->getSwooleRequest()->get ) ? $request->getSwooleRequest()->get : [];
  2. $_POST = isset( $request->getSwooleRequest()->post ) ? $request->getSwooleRequest()->post : [];
  3. $_COOKIE = isset( $request->getSwooleRequest()->cookie ) ? $request->getSwooleRequest()->cookie : [];
  4. $_FILES = isset( $request->getSwooleRequest()->files ) ? $request->getSwooleRequest()->files : [];
  5. $server = $request->getSwooleRequest()->server;
  6. $_SERVER = [];
  7. if( isset( $server ) ){
  8. foreach( $server as $key => $value ){
  9. $_SERVER[strtoupper( $key )] = $value;
  10. }
  11. }
  12. var_dump( $_SERVER );