All pastes #926676 Raw Edit

Mine

public text v1 · immutable
·published 2008-03-03 20:13 UTC
rendered paste body

<?php
/*
DB Connectivity here
*/
DEFINE ('DB_USER_READONLY', '...');
DEFINE ('DB_PASS_READONLY', '...');
DEFINE ('DB_NAME', '...');
DEFINE ('DB_HOST', 'localhost');
function db_connect(){
	$db_user = DB_USER_READONLY;
	$db_pass = DB_PASS_READONLY;
	$DBC = mysql_connect(DB_HOST, $db_user, $db_pass);
	$DBS = mysql_select_db(DB_NAME);
	if(($DBC != false) && ($DBS != false)){
		return true;
	}else{
		return false;
	}
}//ENDFUNCTION
if(!db_connect()){
	print_r("COULD NOT ESTABLISH DATABASE CONNECTION. DYING\n");
	die();
}else{
	print_r("DATABASE CONNECTION ESTABLISHED.\n");
}//ENDIF
/*
Sockets Server goes Here
*/

error_reporting(E_ALL);

ob_implicit_flush();
$address = '...';
$port = 9999;
function send_Push_Message(&$allclient) {
	print_r("starting push update\n");
	$resource = mysql_query("......;");
		while($row = mysql_fetch_assoc($resource)){
		$buffer .= '<team ';
		$buffer .= 'name="'.$row['Name'].'" ';
		$buffer .= 'P="'.$row['P'].'" ';
		if($row['gf']>$row['ga']){$buffer.='W="'.($row['W']+1).'" ';}else{$buffer .= 'W="'.$row['P'].'" ';}
		if($row['gf']==$row['ga']){$buffer.='D="'.($row['D']+1).'" ';}else{$buffer .= 'D="'.$row['D'].'" ';}
		if($row['gf']<$row['ga']){$buffer.='L="'.($row['L']+1).'" ';}else{$buffer .= 'L="'.$row['L'].'" ';}
		$buffer .= 'GF="'.$row['GFTODAY'].'" ';
		$buffer .= 'GA="'.$row['GATODAY'].'" ';
		$buffer .= 'GD="'.$row['GDTODAY'].'" ';
		$buffer .= 'PTS="'.$row['ptslive'].'" ';
		
		$buffer .= '/>';
		}
		$buffer .= '</table>';
		$buffer .= '<results>';
		$resource = mysql_query("...");
		if(mysql_num_rows($resource)>0){
		while($row = mysql_fetch_assoc($resource)){
			$buffer .= '<game hometeam="'.$row['hteam'].'" hscore="'.$row['hgoals'].'" awayteam="'.$row['ateam'].'" ascore="'.$row['agoals'].'" />';
		}
		}
		$buffer .= '</results>';
		$buffer .= '</league>';
	
	
	$buffer.='</update>';
	print_r(mysql_error());
	print_r($allclient);
	foreach($allclient as $client) {
		$removethese = array();
		$ret = @socket_write($client, $buffer.chr(0));
		if($ret===FALSE){
			print_r($client." IS CLOSED\n");
			//REMOVE $client FROM $pushclients-----------
			$index = array_search($client,$allclient);
			unset($allclient[$index]);
		}//ENDIF
	}//ENDFOREACH
}//ENDFUNCTION
function initialise_client($client){
	$resource = mysql_query("...");
	$buffer = '<initalise>';
	while($row = mysql_fetch_assoc($resource)){
		switch(strtoupper($row['event'])){
		case 'ABANDONED':
			$buffer.= '<abdn scorer="'.$row['ScoringTeam'].'" score="'.$row['scoreHome'].'-'.$row['scoreAway'].'" goaltime="'.$row['GoalTime'].'" homeid="'.$row['HomeTeamID'].'" awayid="'.$row['AwayTeamID'].'" scoreteam="'.$row['ScoringTeam'].'" hometeam="'.htmlentities($row['HomeTeam']).'" awayteam="'.htmlentities($row['AwayTeam']).'" player="'.$row['comment'].'" />';
			break;
		case 'FULLTIME':
			$buffer.= '<result scorer="'.$row['ScoringTeam'].'" score="'.$row['scoreHome'].'-'.$row['scoreAway'].'" goaltime="'.$row['GoalTime'].'" homeid="'.$row['HomeTeamID'].'" awayid="'.$row['AwayTeamID'].'" scoreteam="'.$row['ScoringTeam'].'" hometeam="'.htmlentities($row['HomeTeam']).'" awayteam="'.htmlentities($row['AwayTeam']).'" player="'.$row['comment'].'" />';
			break;
		case 'REDCARD':
			$buffer.= '<rc scorer="'.$row['ScoringTeam'].'" score="'.$row['scoreHome'].'-'.$row['scoreAway'].'" goaltime="'.$row['GoalTime'].'" homeid="'.$row['HomeTeamID'].'" awayid="'.$row['AwayTeamID'].'" scoreteam="'.$row['ScoringTeam'].'" hometeam="'.htmlentities($row['HomeTeam']).'" awayteam="'.htmlentities($row['AwayTeam']).'" player="'.$row['comment'].'" />';
			break;
		case 'YELLOWCARD':
			$buffer.= '<yc scorer="'.$row['ScoringTeam'].'" score="'.$row['scoreHome'].'-'.$row['scoreAway'].'" goaltime="'.$row['GoalTime'].'" homeid="'.$row['HomeTeamID'].'" awayid="'.$row['AwayTeamID'].'" scoreteam="'.$row['ScoringTeam'].'" hometeam="'.htmlentities($row['HomeTeam']).'" awayteam="'.htmlentities($row['AwayTeam']).'" player="'.$row['comment'].'" />';
			break;
		case 'GOAL':
			$buffer.= '<goal scorer="'.$row['ScoringTeam'].'" score="'.$row['scoreHome'].'-'.$row['scoreAway'].'" goaltime="'.$row['GoalTime'].'" homeid="'.$row['HomeTeamID'].'" awayid="'.$row['AwayTeamID'].'" scoreteam="'.$row['ScoringTeam'].'" hometeam="'.htmlentities($row['HomeTeam']).'" awayteam="'.htmlentities($row['AwayTeam']).'" player="'.$row['comment'].'" />';
			break;
		}
	}//ENDWHILE
	for($leagueid = 1;$leagueid<7;$leagueid++){
		$buffer .= '<league id="'.$leagueid.'">';
		$buffer .= '<table>';
		$resource = mysql_query("...");
		while($row = mysql_fetch_assoc($resource)){
		$buffer .= '<team ';
		$buffer .= 'name="'.$row['Name'].'" ';
		$buffer .= 'P="'.$row['P'].'" ';
		if($row['gf']>$row['ga']){$buffer.='W="'.($row['W']+1).'" ';}else{$buffer .= 'W="'.$row['P'].'" ';}
		if($row['gf']==$row['ga']){$buffer.='D="'.($row['D']+1).'" ';}else{$buffer .= 'D="'.$row['D'].'" ';}
		if($row['gf']<$row['ga']){$buffer.='L="'.($row['L']+1).'" ';}else{$buffer .= 'L="'.$row['L'].'" ';}
		$buffer .= 'GF="'.$row['GFTODAY'].'" ';
		$buffer .= 'GA="'.$row['GATODAY'].'" ';
		$buffer .= 'GD="'.$row['GDTODAY'].'" ';
		$buffer .= 'PTS="'.$row['ptslive'].'" ';
		
		$buffer .= '/>';
		}
		$buffer .= '</table>';
		$buffer .= '<results>';
		$resource = mysql_query("...");
		if(mysql_num_rows($resource)>0){
		while($row = mysql_fetch_assoc($resource)){
			$buffer .= '<game hometeam="'.$row['hteam'].'" hscore="'.$row['hgoals'].'" awayteam="'.$row['ateam'].'" ascore="'.$row['agoals'].'" />';
		}
		}
		$buffer .= '</results>';
		$buffer .= '</league>';
	}
	$buffer.='</initialise>';
	socket_write($client, $buffer.chr(0));
}//ENDFUNCTION
$master = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
$localsock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
$fulltimesock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
socket_set_option($master, SOL_SOCKET,SO_REUSEADDR, 1);
socket_set_option($master, SOL_SOCKET,SO_KEEPALIVE, 1);
socket_bind($master, $address, $port);
socket_bind($localsock,"127.0.0.1",9998);
socket_listen($localsock,SOMAXCONN);
socket_listen($master, SOMAXCONN);

$pushclients = array($master);

//---- Create Persistent Loop to continuously handle incoming socket messages ---------------------
while (true) {
	$changed_sockets = array($master, $localsock);
	$num_changed_sockets = socket_select($changed_sockets, $write = NULL, $except = NULL, NULL);
	if($num_changed_sockets===false){
		print_r("FATAL ERROR");
	}//ENDIF
	foreach($changed_sockets as $socket){
		if ($socket == $master){
			if (($client = socket_accept($master)) < 0) {
				print_r("socket_accept() failed: reason: " . socket_strerror($msgsock) . "\n");
				continue;
			} else {
				print_r("new connection accepted: ".$client."\n");
				initialise_client($client);
				array_push($pushclients, $client);
			}//ENFIF

		}elseif($socket = $localsock){
			if (($client = socket_accept($localsock)) < 0) {
				print_r("socket_accept() failed: reason: " . socket_strerror($msgsock) . "\n");
				continue;
			} else {
				print_r("Current Conenctions: ".sizeof($pushclients)."\n");
				send_Push_Message(&$pushclients);
				socket_write($client,"received".chr(0));
				socket_close($client);
			}//ENDIF
		}else{

			$bytes = socket_recv($socket, $buffer, 2048, 0);
			if ($bytes == 0) {
				//do nothing with received data.
			}//ENDIF
		}//ENDIF
	}//ENDFOREACH
}//ENDWHILE
?>