1 вопрос решон! Вопрос 2. Как создать скрипт, который будет постоянно выполняться на серве? Независимо от того обращается юзер к странице или нет. В game maker это ещё называется STEP. =)
Сообщение отредактировал AGENTX001 - Пятница, 04 Февраля 2011, 10:54
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at Z:\home\mafia\www\game\chat\chat-send.php:2) in Z:\home\mafia\www\game\chat\chat-send.php on line 3
Warning: include(chattextphp) [function.include]: failed to open stream: No such file or directory in Z:\home\mafia\www\game\chat\chat.php on line 30
Warning: include() [function.include]: Failed opening 'chattextphp' for inclusion (include_path='.;/usr/local/php5/PEAR') in Z:\home\mafia\www\game\chat\chat.php on line 30
1-ая ошибка: session_start() - должен вызываться до вывода в браузере какого-либо текста 2-ая не может инклюдить файл chattextphp - может chattext.php должен быть? Разработка и продвижение сайтов. Дизайн
по 2-му вопросу, смотря что имеется ввиду под постоянным выполнением скрипта если надо чтобы php-скрипт постоянно в памяти висел, напиши скрипт что-то типа такого
Code
<?php set_time_limit(0); //убираем ограничение времени выполнения скрипта $flag = true; while($flag){ //выполняемый код //для выхода из цикла $flag = false; } ?>
и консольке этот скрипт надо будет запустить, именно в консоли, а не в браузере
если тебе надо запускать скрипт с определенной периодичностью, то в никсах есть cron для этого, для виндоуса тоже есть разные аналоги-планировщики
lvovand, я имею ввиду регенирацию здоровья. Тут конечно проблема... У меня была мысля сделать так: Заходит юзер на страницу в 8:30, у него здоровья 55, вряма входа (8:30) сохраняется Заходит юзер на страницу в 8:35, тут выполняется расчёт (8:35 - 8:30 = 5 минут) скорость регенераци 10 хп в минуту. И становитьсяу юзера 105 хп. Но мне казалось это замороченым, теперь я вообще неврублюсь(
да, в твоем случае надо сделать скрипт, который бы планировщиком запускался с определенной периодичностью, например, в базе можешь сохранять время последней регенерации и скриптом смотреть разницу между текущим временем и тем, что в базе, если больше определенного, то обновляешь хп и дату регенерации Разработка и продвижение сайтов. Дизайн
да не, начнешь делать, все не так страшно, как-то так примерно
Code
<?php //предполагаем что к базе уже подключились, regen_time - поле типа INT в таблице users, содержит время, когда была регенерация $time = time(); $dif = 60; //время между проверками в секундах $xp_dif = 10; // на сколько увеличить xp в минуту $sql = "SELECT `id`, (".$time." - `regen_time`)/60 AS minutes FROM `users` WHERE `online` = 1 AND ( ".$time." - `regen_time`) >= ".$dif." "; //получаем id пользователей в онлайне, у которых подошло время регенерации $res = mysql_query($sql); while($row = mysql_fetch_array($res) ){ $sql_regen = "UPDATE `users` SET `regen_time` = ".$time.", `xp` = `xp` + ".($xp_dif * $row['minutes'])." WHERE `id` = ".$row['id']." LIMIT 1; "; $res_regen = mysql_query($sql_regen); } ?>
может не оптимально и проверить пока не могу, но там по ходу когда делать будешь доработать можно. Мысль в общем такая - пробегаемся по таблице пользователей, смотрим кто в онлайне и у кого подошло время регенерации. Берем их id и кол-во прошедших с последней регенерации минут и обновляем хп. А скрипт планировщиком запускаешь с определенным периодом