Buenas, tengo un chat en mi web hecho por mi que estoy seguro que en algo lo he hecho mal, uso xajax para los procesos y he pedido a mi servidor que me envie los procesos que se ejecutan cada poco tiempo por rendimiento, ya que mi web teniendo un server dedicado va muy muy lento.
Me ha sorprendido ver que en el momento que me envian el archivo con los procesos tengo solo 3 personas en mi web, pero que el proceso del chat se esta ejecutando mas de 40 veces y encima por ip que ni estan en ese momento en la web ... ¿no es raro?.
Os pongo aqui el chat, a ver si veis que tengo mal, que seguro que algo tengo mal ...
Código PHP:
<?
// aqui defino la forma de session
require 'includes/session.php';
// Aqui defino el string de conexion
require 'includes/connectdb.php';
// aqui defino el idioma
require 'includes/es.php';
if ($_GET['activarchat'] == 1)
$_SESSION['estadochat'] = 1;
if ($_SESSION['estadochat'] <> 1)
{
?>
<style>
body {
overflow-x:hidden;
background-color:rgb(213,225,240)
}
.chat_bloqueado {
font-size: 11px;
font-family: verdana, Geneva, Arial;
}
</style>
<div class=chat_bloqueado>
<center>
<p class=chat_bloqueado>Chat Bloqueado</p>
<p class=chat_bloqueado>si deseas activar el chat <a href=chat_mini.php?activarchat=1&chat=<?echo $_GET['chat'];?>&chat2=<?echo $_GET['chat2'];?>>presiona aquí</a></p>
</center>
</div>
<?
exit;
}
require_once("xajax_core/xajax.inc.php");
$xajax = new xajax();
$xajax->registerFunction("myFunction");
$xajax->registerFunction("funcion_barranavegacion");
$chat = "principal";
function f_chat($texto, $chat, $id_chat)
{
// Aqui guardamos datos.
if ($texto <> "")
{
//$fecha=date("Y/m/d - H:i:s");
//Obtenemos la fecha actual:
$fecha=time();
//Queremos restar 3 horas a la fecha actual:
$horas = 7;
// Convertimos las horas a segundos y las sumamos:
$fecha += ($horas * 60 * 60);
// Le damos al resultado el formato deseado:
$fecha = date("Y-m-d H:i:s", $fecha );
$insert="insert into chat (chat, comentario, fecha, usuario) values ('".$chat."','".htmlentities(utf8_decode($texto))."','".$fecha."', '".$_SESSION['nick']."')";
mysql_query($insert);
}
// Comprobar que no veas el chat que no tienes acceso.
if ($chat <> "principal") {
$tmpQuery = mysql_query("select count(gameID) from games where gameID = '".$chat."' and (whitePlayer = ".$_SESSION['playerID']." or blackPlayer = ".$_SESSION['playerID'].")");
$max_id = mysql_result($tmpQuery,0);
if ($max_id == 0)
{
exit;
}
}
// aqui para el tiempo
if ($chat == "principal") {
// el chat principal lo pongo poco tiempo el resto mucho.
$tiempo = "20001";
} else {
$tiempo = "160001";
}
// validar que si ya se cargo el chat no lo vuelva a cargar.
// aqui cargamos el chat.
$tmpQuery = mysql_query("select count(id) from chat where chat = '".$chat."'");
$max_id = mysql_result($tmpQuery,0);
$cargarchat = 0;
if ($id_chat == "" ) {
$id_chat = $max_id;
$cargarchat = 1;
} else {
if ($id_chat <> $max_id)
{
$id_chat = $max_id;
$cargarchat = 1;
}
}
if ($max_id == 0)
$cargarchat = 1;
if ($cargarchat == 1) {
$select="select * from chat where chat = '".$chat."' order by id desc limit 20";
$select=mysql_query($select);
while($row = mysql_fetch_array($select))
{
$mensaje = $row["comentario"];
$usuario = $row["usuario"];
$usuario = str_replace("á", "a", $usuario);
$usuario = str_replace("é", "e", $usuario);
$usuario = str_replace("í", "i", $usuario);
$usuario = str_replace("ó", "o", $usuario);
$usuario = str_replace("ú", "u", $usuario);
$ver = $ver."<div class=chat><b>".$usuario."</b><br>".$mensaje."<br /></div>";
}
if ($ver == "")
$ver = _nohaymensajesenelchat.".";
$objResponse = new xajaxResponse();
$objResponse->call('setTimeout','xajax_f_chat("", "'.$chat.'", "'.$id_chat.'");',$tiempo);
$objResponse->assign("ventanachat","innerHTML", $ver);
$objResponse->assign("id_chat","value",$id_chat);
return $objResponse;
} else {
$objResponse = new xajaxResponse();
$objResponse->call('setTimeout','xajax_f_chat("", "'.$chat.'", "'.$id_chat.'");',$tiempo);
return $objResponse;
}
}
$xajax->registerFunction("f_chat");
$xajax->processRequest();
?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="es" dir="ltr" lang="es">
<head>
<title>MiniChat</title>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<meta NAME="language" CONTENT="es" />
<link rel="stylesheet" type="text/css" media="screen,projection,print" href="./css/layout4_setup_sinlateral.css" />
<link rel="stylesheet" type="text/css" media="screen,projection,print" href="./css/layout4_text.css" />
<style>
body {
overflow-x:hidden;
/*background : rgb(213,225,240);*/
background-color:rgb(213,225,240)
}
.blue {width:183px; margin:0 0 2.5em 0; padding:0 0 10px 0; border:solid 1px rgb(137,170,214); background-color:rgb(213,225,240);}
#ventanachat h1, #ventanachat h2 {
color : #cc0000;
}
#ventanachat {
right:0px;
position : fixed;
top : 10%;
bottom : 100px;
margin : 30px 0px 0px 0px;
width : 200px;
height : 200px;
color : #000000;
overflow : auto;
}
.innertube{
margin: 15px; /*Margins for inner DIV inside each DIV (to provide padding)*/
}
.chat
{
color:#000000;
font-size:7pt;
padding: 7px;
margin: 5px;
font-weight : normal;
letter-spacing : 2px;
border: 1px solid #b8d957;
background-color: #ecf2e0;
text-align: left;
}
.actions{
margin-left: 10px;
margin-top: 10px;
}
</style>
<?php $xajax->printJavascript(); ?>
</head>
<body>
<?
// antes de nada comprobar que haya chat.
$tmpOpponentEmail = mysql_query("SELECT id from datos_generales where chatactivo = 1");
if (mysql_num_rows($tmpOpponentEmail) == 0)
{
echo "<br><br><br><br><b class=aviso>Chat bloqueado por los administradores.</b>";
exit;
}
?>
<script language="JavaScript" type="text/javascript">
<!--
function enviarmensaje(mensaje, id_chat)
{
document.getElementById('e1').value="";
document.getElementById('e1').focus();
xajax_f_chat(mensaje, "<?echo $chat;?>", id_chat);
}
function keyDown(e, id_chat) {
var name = "";
if (document.all) {
if (e.keyCode == 13) name = e.srcElement.name;
} else
if (e.which == 13) name = e.target.name;
if ((name.length > 0) && (name.length < 6)){
xajax_f_chat(document.getElementById('e1').value, "<?echo $chat;?>", id_chat);
document.getElementById('e1').value="";
document.getElementById('e1').focus();
}
}
function setsmiley(what){
tmp=document.getElementById("e1");
tmp.value = tmp.value+" "+what+" ";
tmp.focus();
}
// -->
</script>
<div class="actions">
<a href="javascript:setsmiley(':)')"><img src="img/chat/smile.gif" border="0" alt=":)" align="bottom"></a>
<a href="javascript:setsmiley(':p')"><img src="img/chat/tongue.gif" border="0" alt=":p" align="bottom"></a>
<a href="javascript:setsmiley(';)')"><img src="img/chat/wink.gif" border="0" alt=";)" align="bottom"></a>
<a href="javascript:setsmiley(':o')"><img src="img/chat/icon_e_surprised.gif" border="0" alt=":(" align="bottom"></a>
<a href="javascript:setsmiley(':-(')"><img src="img/chat/icon_mad.gif" border="0" alt=":(" align="bottom"></a>
<input name="e1" id="e1" type="text" size="20" maxlength="150" onkeydown="javascript:keyDown(event, document.getElementById('id_chat').value);">
<input type="button" value="*" onclick="enviarmensaje(document.getElementById('e1').value, document.getElementById('id_chat').value)" />
<input type="hidden" id="id_hash" value="" />
<input type="hidden" id="id_chat" value="0" />
</div>
<div id="ventanachat">
<div class="innertube">
<br><br><br><center>Cargando Chat.</center>
</div>
</div>
<script type="text/javascript">
document.getElementById('e1').value="";
document.getElementById('e1').focus();
xajax_f_chat("", "<?echo $chat;?>",0);
</script>
</body></html>
<? mysql_close(); ?>
Gracias anticipadas, un saludo.