⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 patxmlserver_dom.php

📁 flashget43的源代码 一个比较常用的下载程序
💻 PHP
字号:
<?PHP/***	patXMLServer_Dom*	needs domxml extension*	PHP socket xml server base class*	Events that can be handled:*	  * onStart*	  * onConnect*	  * onConnectionRefused*	  * onClose*	  * onShutdown*	  * onReceiveRequest**	Methods used to send responses:*	  * sendResponse*	  * broadcastResponse**	@version	0.1*	@author		Stephan Schmidt <schst@php-tools.net>, Gerd Schaufelberger <gerd@php-tools.net>*	@package	patServer*/	class	patXMLServer_Dom extends patServer{/***	server received data*	decodes the request**	@access	private*	@param	integer	$clientId	id of the client that sent the data*	@param	string	$xml		xml data*/	function	onReceiveData( $clientId, $inXML )	{		//	create dom tree		$xmls = explode("\0", trim($inXML));		foreach($xmls as $xml)		{			$xmldoc = new myXML( $xml );						if ($xmldoc->last_error != '')			{ 				$this->sendDebugMessage( $xmldoc->last_error );				continue;			}									//	get root element (type of request)			$root			=	$xmldoc->root;			$requestType	=	strtolower($root->name);						//	extract request parameters			$requestParams	=	array();				if( is_array($root->children) )			{				foreach( $root->children as $child ) 				{					$requestParams[strtolower($child->name)] =	$child->getvalue('');				}				}			if( is_array($root->attributes) )			{				while (list($key, $val) = each($root->attributes)) 				{						$requestParams[strtolower($key)] = $val;				}			}			if( method_exists( $this, "onReceiveRequest" ) )				$this->onReceiveRequest( $clientId, $requestType, $requestParams, $xml );		}	}	/***	send a response**	@access	public*	@param	integer	$clientId	id of the client to that the response should be sent*	@param	string	$responseType	type of response*	@param	array	$responseParams	all params*	@return	boolean	$success*/	function	sendResponse( $clientId, $responseType, $responseParams )	{		$xml	=	$this->encodeResponse( $responseType, $responseParams );		$this->sendData( $clientId, $xml );	}	/***	!!! added function !!!* 	send pure xml*/		function sendXMLResponse( $clientId, $xml)	{		$this->sendData( $clientId, $xml."\0" ); //!!!always \0	}/***	!!! added function !!!* 	send pure xml*/		function broadcastXMLResponse( $xml )	{		$this->broadcastData( $xml."\0", array() );	}		/***	send response to all clients**	@access	public*	@param	string	$data		data to send*	@param	array	$exclude	client ids to exclude*/	function	broadcastResponse( $responseType, $responseParams, $exclude = array() )	{		$xml	=	$this->encodeResponse( $responseType, $responseParams );		$this->broadcastData( $xml, $exclude );	}	/***	encode a request**	@access	public*	@param	string	$responseType	type of response*	@param	array	$responseParams	all params*	@return	string	$xml	encoded reponse*/	function	encodeResponse( $responseType, $responseParams )	{		if( empty( $responseParams ) )			return	sprintf( "<%s/>\0", $responseType );		$xml	=	sprintf( "<%s>", $responseType );		foreach( $responseParams as $key => $value )		{			if( $value == "" )				$xml	.=	sprintf( "<%s/>", $key );			else				$xml	.=	sprintf( "<%s>%s</%s>", $key, $value, $key );		}		$xml	.=	sprintf( "</%s>\0", $responseType );		return	$xml;	}}?>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -