加入收藏 | 设为首页 | 会员中心 | 我要投稿 应用网_丽江站长网 (http://www.0888zz.com/)- 科技、建站、数据工具、云上网络、机器学习!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php socket实现的聊天室代码详解

发布时间:2022-07-01 16:18:56 所属栏目:PHP教程 来源:互联网
导读:这篇文章主要介绍了php socket实现的聊天室代码分享,本文实现代码来自国外友人,需要的朋友可以参考下。 /** * patServer * PHP socket server base class * Events that can be handled: * * onStart author = array(Stephan Schmidt schst@php-tools.de, )
  这篇文章主要介绍了php socket实现的聊天室代码分享,本文实现代码来自国外友人,需要的朋友可以参考下。
 
  /**
  * patServer
  * PHP socket server base class
  * Events that can be handled:
  *  * onStart
     "author"  => array("Stephan Schmidt <schst@php-tools.de>", )
    );
    
  /**
  * port to listen
  * @var integer  $port
  */
    var $port  = 10000;
    
  /**
  * domain to bind to
  * @var string $domain
  */
    var $domain  = "localhost";
    
  /**
  * maximum amount of clients
  * @var integer $maxClients
  */
    var $maxClients = -1;
    
     var $maxQueue = 500;
    
  /**
  * debug mode
  * @var boolean $debug
  */
    var $debug  = true;
    
  /**
  * debug mode
  * @var string $debugMode
  */
    var $debugMode = "text";
    
  /**
  * debug destination (filename or stdout)
  * @var string $debugDest
  */
    var $debugDest = "stdout";
    
  /**
  * empty array, used for socket_select
  * @var array $null
  */
    var $null  = array();
    
  /**
  * all file descriptors are stored here
  * @var array $clientFD
  */
    var $clientFD = array();
    
  /**
   * create a new socket server
  *
  * @access public
  * @param string  $domain  domain to bind to
  * @param integer  $port  port to listen to
  */
  function patServer( $domain = "localhost", $port = 10000 )
  {
    $this->domain = $domain;
    $this->port  = $port;
    
    $this->serverInfo["domain"]     = $domain;
    $this->serverInfo["port"]     = $port;
    $this->serverInfo["servername"]   = $this->systemVars["appName"];
    $this->serverInfo["serverversion"] = $this->systemVars["appVersion"];
    
    set_time_limit( 0 );
  }
    
  /**
  * set maximum amount of simultaneous connections
  *
  * @access public
  * @param int $maxClients
  */
  function setMaxClients( $maxClients )
  {
    $this->maxClients = $maxClients;
  }
    
     }
    
    $this->debug  = true;
    $this->debugMode = $debug;
    $this->debugDest = $dest;
  }
    
  /**
  * start the server
  *
  * @access public
  * @param int $maxClients
  */
  function start()
  {
    $this->initFD = @socket_create( AF_INET, SOCK_STREAM, 0 );
    if( !$this->initFD )
    die( "patServer: Could not create socket." );
    
     if( !@socket_listen( $this->initFD, $this->maxQueue ) )
    die( "patServer: Could not listen ( ".$this->getLastSocketError( $this->initFd )." )." );
    
    $this->sendDebugMessage( "Listening on port ".$this->port.". Server started at ".date( "H:i:s", time() ) );
    
    // this allows the shutdown function to check whether the server is already shut down
    $GLOBALS["_patServerStatus"] = "running";
    // this ensures that the server will be sutdown correctly
    register_shutdown_function( array( $this, "shutdown" ) );
    
    if( method_exists( $this, "onStart" ) )
    $this->onStart();
    
    $this->serverInfo["started"] = time();
    $this->serverInfo["status"]  = "running"; 

(编辑:应用网_丽江站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读