Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Vou tentar explicar da melhor forma possível, mas não pe muito fácil....
Vou montar um jogo estilo MMORPG, mas é claro que tenho que fazer o possível pra não ficar fazendo consultas no mysql, aí pensei o seguinte, fazer um cache interno, java tem, e várias plataformas também ja vi, mas ainda não consegui acha pro PHP, sou um player, vou jogando e meus dados é gravado em um cache interno, e somente a cada 15 minutos iria salvar esses dados no DB, assim não averia tanta query indo para do DB/mysql e fazendo o servidor ficar lerdo, usaria um tipo de classe que salvaria tudo e depois enviaria...
Alguém tem alguma idéia?
Ex: cache interno de java
package com.l2jfree.gameserver.datatables;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import javolution.util.FastMap;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import com.l2jfree.Config;
import com.l2jfree.L2DatabaseFactory;
import com.l2jfree.gameserver.model.L2TeleportLocation;
/**
* This class ...
*
* @version $Revision: 1.3.2.2.2.3 $ $Date: 2005/03/27 15:29:18 $
*/
public class TeleportLocationTable
{
private final static Log _log = LogFactory.getLog(TeleportLocationTable.class.getName());
private static TeleportLocationTable _instance;
private FastMap<Integer, L2TeleportLocation> _teleports;
public static TeleportLocationTable getInstance()
{
if (_instance == null)
{
_instance = new TeleportLocationTable();
_instance.reloadAll();
}
return _instance;
}
private TeleportLocationTable()
{
}
public void reloadAll()
{
_teleports = new FastMap<Integer, L2TeleportLocation>();
Connection con = null;
try
{
try
{
con = L2DatabaseFactory.getInstance().getConnection(con);
PreparedStatement statement = con.prepareStatement("SELECT Description, id, loc_x, loc_y, loc_z, price, fornoble FROM teleport");
ResultSet rset = statement.executeQuery();
L2TeleportLocation teleport;
while (rset.next())
{
teleport = new L2TeleportLocation();
teleport.setTeleId(rset.getInt("id"));
teleport.setLocX(rset.getInt("loc_x"));
teleport.setLocY(rset.getInt("loc_y"));
teleport.setLocZ(rset.getInt("loc_z"));
if (Config.ALT_GAME_FREE_TELEPORT)
teleport.setPrice(0);
else
teleport.setPrice(rset.getInt("price"));
teleport.setIsForNoble(rset.getInt("fornoble") == 1);
_teleports.put(teleport.getTeleId(), teleport);
}
rset.close();
statement.close();
_log.info("TeleportLocationTable: Loaded " + _teleports.size() + " Teleport Location Templates.");
}
catch (Exception e)
{
_log.error("error while creating teleport table ", e);
}
}
finally
{
try
{
if (con != null)
con.close();
}
catch (SQLException e)
{
e.printStackTrace();
}
}
}
/**
* @param template id
* @return
*/
public L2TeleportLocation getTemplate(int id)
{
return _teleports.get(id);
}
}Gostaria de fazer cache interno em PHP, não é tão fácil, tentei várias coisas, então vim aqui pra pedir ajuda de outros profissionais em PHP
Carregando comentários...