[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Обновление данных из базы
kondor
В общем тапками прошу не кидаться, язык начал учить совсем не давно много еще чего не знаю.
В общем есть скрипт который выводит данные из таблицы на страницу сайта. Грубо говоря TOP пользователей.

<?php
require_once("config.php");


$query = "SELECT char_name, pvpkills FROM characters ORDER BY pvpkills DESC LIMIT $pk";
$result = mysql_query($query) or die("Query failed : " . mysql_error());


print "<center><font color=ff0000>      Name           PVP</font><table>\n";
while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {
print "\t<tr>\n";
foreach ($line as $col_value) {
print "\t\t<td>$col_value</td>\n";
}
print "\t</tr>\n";
}
print "</center></table>\n";
?>


Проблема в том, что скрипт выводит данные из базы при каждом обновление страницы, что сильно нагружает базу данных да и канал от сервера к хостингу сайта. Знаю что можно сделать какимто образом так чтобы скрипт запрашивал данные скажем раз в 10 минут после чего просто выводил уже готовую информацию на сайт не соединяясь с сервером. Подскажите как это можно сделать, буду благодарен если выложите сразу готовое решение.



Спустя 5 минут, 28 секунд (4.09.2010 - 16:43) kondor написал(а):
Еще один вопрос. Такая схема, есть акаунт, на акаунте есть N персонажей, как можно вывести каждого персонажа в отдельности на страницу так что-бы в последствии можно было сделать их в виде ссылки?

Спустя 5 минут, 45 секунд (4.09.2010 - 16:49) suslik написал(а):
Готовое решение писать лениво))
А в двух словах короткое решение:
1. записать результат в html-файл, а не выводить принтом, инклюдить этот файл.
2. добавить условие: если время создания файла более 10 мин, перезаписать его.
Если есть вопросы по реализации задавай.

Спустя 1 минута, 13 секунд (4.09.2010 - 16:50) suslik написал(а):
kondor, второй ваш пост из области пойди туда, сам знаешь зачем)))
какие аккаунты, что за персы, где живут??

Спустя 8 минут, 40 секунд (4.09.2010 - 16:59) kondor написал(а):
игра lineage 2 пишу на сайт свой, личный кабинет есть таблица accaunts в которой хранятся данные по логину и паролю акаунта, и есть таблица charters в которой находятся данные по персонажам на акаунте. Тоесть грубо говоря есть аккаунт Qaz и в этом акаунте есть 3 персонажа 123, 321, 213 и мне хочется чделать так чтобы я потом эти выведенные данные мог использовать для следующих SQL запросов в скрипте.



На счет обновления файла. Это все понятно, не понятно каким образом это сделать, дайте пример хотябы...

Спустя 20 минут, 41 секунда (4.09.2010 - 17:19) suslik написал(а):

require_once("config.php");
$file_cache = 'namePVP.cache.html';
$content = '';
if(file_exists($file_cache) && time()-filemtime($file_cache))<10*60)
{
require_once ("$file_cache");
}else
{
print writeCache();
}



function writeCache()
{
$query = "SELECT char_name, pvpkills FROM characters ORDER BY pvpkills DESC LIMIT $pk";
$result = mysql_query($query) or die("Query failed : " . mysql_error());

$content .= "<center><font color=ff0000> Name PVP</font><table>\n";
while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {
$content .= "\t<tr>\n";
foreach ($line as $col_value) {
$content .= "\t\t<td>$col_value</td>\n";
}
$content .= "\t</tr>\n";
}
$content .= "</center></table>\n";
file_put_contents($file_cache, $content) or die("Can't write file!");
return $content;
}

держи быдло-код, я не тестил, может где и очепятался.

по персам -- ну дык формируй ссылки ввида
<a href="персонаж.пхп?id=123>персонаж 123</a>

а на странице персонажа добавляй к запросу WHERE `id` = '$_GET['id']'

Спустя 12 дней, 19 часов, 13 минут, 12 секунд (17.09.2010 - 12:33) Guest написал(а):
Query failed : You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1

Спустя 1 минута, 21 секунда (17.09.2010 - 12:34) kondor написал(а):
<?php
require_once("config.php");
$file_cache = 'namePVP.cache.html';
$content = '';
if(file_exists($file_cache) && time()-filemtime($file_cache)>10*60)
{
require_once ("$file_cache");
}else
{
print writeCache();
}


function writeCache()
{


$query = "SELECT char_name, pvpkills FROM characters ORDER BY pvpkills DESC LIMIT $pk";
$result = mysql_query($query) or die("Query failed : " . mysql_error());


print "<center><font color=ff0000>      Name           PVP</font><table>\n";
while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {
print "\t<tr>\n";
foreach ($line as $col_value) {
print "\t\t<td>$col_value</td>\n";
}
print "\t</tr>\n";
}
print "</center></table>\n";
file_put_contents($file_cache, $content) or die("Can't write file!");
return $content;
}
?>


и получаю

Query failed : You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1


хотя запросы в другом скрипте работают.

Спустя 17 минут, 26 секунд (17.09.2010 - 12:51) inpost написал(а):
Страница будет: profile.php?id=1

SELECT char_name, pvpkills FROM characters WHERE ид_персонажа=(int)$_GET['id']
echo $hero['name'];

Спустя 13 минут, 35 секунд (17.09.2010 - 13:05) kondor написал(а):
Цитата (inpost @ 17.09.2010 - 09:51)
Страница будет: profile.php?id=1

SELECT char_name, pvpkills FROM characters WHERE ид_персонажа=(int)$_GET['id']
echo $hero['name'];

Это про что?

Спустя 1 минута (17.09.2010 - 13:06) kondor написал(а):
Лучше скажите как скрипт до ума довести. Он зараза не хочет работать как бы я не пытался его заставить. Он выводит данные в фаил HTML но не раз в 60 секунд а при каждом обновлении страницы.

Спустя 7 минут, 41 секунда (17.09.2010 - 13:14) Renden написал(а):
kondor
В cron поставь)

Спустя 22 минуты, 12 секунд (17.09.2010 - 13:36) kondor написал(а):
Если бы у меня сайт стоял на сервере базара 0. А вот ка кэто на хостинге поставить. Да и лишний софт это лишние дыры в защите.

Спустя 10 часов, 4 минуты, 7 секунд (17.09.2010 - 23:40) suslik написал(а):
Цитата (kondor @ 17.09.2010 - 10:36)
Да и лишний софт это лишние дыры в защите.
biggrin.gif
Не о том переживаете.
с ошибкой sql-а справился? запрос в моём коде тот же что и был у тебя.
если перезаписывает файл раньше минуты, попробуй отдебажить правильно ли время файла проверяется и наличие. вообще namePVP.cache.html записывается?
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.