Среда, 25 Декабря 2024, 08:06

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Помогите с PHP.(Новый вопрос)
AGENTX001Дата: Четверг, 03 Февраля 2011, 20:38 | Сообщение # 1
почётный гцупер
Сейчас нет на сайте
1 вопрос решон!
Вопрос 2. Как создать скрипт, который будет постоянно выполняться на серве? Независимо от того обращается юзер к странице или нет. В game maker это ещё называется STEP. =)


Сообщение отредактировал AGENTX001 - Пятница, 04 Февраля 2011, 10:54
lvovandДата: Четверг, 03 Февраля 2011, 20:45 | Сообщение # 2
старожил
Сейчас нет на сайте
Quote (AGENTX001)
$f = fopen (chat.db, r+, false);

fopen ("chat.db", "r+", false);
chat.db и r+ в кавычках должно быть


Разработка и продвижение сайтов. Дизайн

Сообщение отредактировал lvovand - Четверг, 03 Февраля 2011, 20:46
AGENTX001Дата: Четверг, 03 Февраля 2011, 20:57 | Сообщение # 3
почётный гцупер
Сейчас нет на сайте
Теперь только хуже=)
Quote
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

И на странице с кодом

Тоже ошибка -
Quote
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

lvovandДата: Четверг, 03 Февраля 2011, 21:05 | Сообщение # 4
старожил
Сейчас нет на сайте
1-ая ошибка: session_start() - должен вызываться до вывода в браузере какого-либо текста
2-ая не может инклюдить файл chattextphp - может chattext.php должен быть?


Разработка и продвижение сайтов. Дизайн
AGENTX001Дата: Четверг, 03 Февраля 2011, 21:09 | Сообщение # 5
почётный гцупер
Сейчас нет на сайте
Quote
<?php
include(chattext.php);
?>

Там и так chattext.php! Сесию начинаю ДО вывода в браузер текста. chattext.php существует, лежит в тойже дериктории.
lvovandДата: Четверг, 03 Февраля 2011, 21:14 | Сообщение # 6
старожил
Сейчас нет на сайте
Quote (AGENTX001)
include(chattextphp)
с твоего кода цитата

если ты в файле chattext.php session_start() вызываешь, то ошибка само собой будет


Разработка и продвижение сайтов. Дизайн
AGENTX001Дата: Четверг, 03 Февраля 2011, 21:34 | Сообщение # 7
почётный гцупер
Сейчас нет на сайте
Из моего кода цитата!!
Quote
<?php
include(chattext.php);
?>

chattext.php - пустой

Добавлено (03.02.2011, 21:34)
---------------------------------------------
Странно в коде написано одно, а инклудит другое...

lvovandДата: Четверг, 03 Февраля 2011, 21:42 | Сообщение # 8
старожил
Сейчас нет на сайте
ну я тоже не спотолка про твою ошибку сказал )
Failed opening 'chattextphp'

что у тебя в файле chat-send.php?

или уж полностью коды файлов выложи, если не шибко громоздкие

так, приучись к кавычкам
нельзя так: include(chattext.php);
надо: include("chattext.php");


Разработка и продвижение сайтов. Дизайн

Сообщение отредактировал lvovand - Четверг, 03 Февраля 2011, 21:59
AGENTX001Дата: Четверг, 03 Февраля 2011, 21:57 | Сообщение # 9
почётный гцупер
Сейчас нет на сайте
chat.php
===========

chat-send.php
===========
lvovandДата: Четверг, 03 Февраля 2011, 22:02 | Сообщение # 10
старожил
Сейчас нет на сайте
кавычки поправь в в инклюдах файлов, что после этого скажет?

и кcтати, почему режим r+ ставишь? в твоем случае наверно a+ нужен


Разработка и продвижение сайтов. Дизайн

Сообщение отредактировал lvovand - Четверг, 03 Февраля 2011, 22:05
AGENTX001Дата: Пятница, 04 Февраля 2011, 10:56 | Сообщение # 11
почётный гцупер
Сейчас нет на сайте
lvovand, дык помог! УРА!! мой галимочат заработал!

Добавлено (04.02.2011, 10:56)
---------------------------------------------
Ешё вопрос!

lvovandДата: Пятница, 04 Февраля 2011, 12:08 | Сообщение # 12
старожил
Сейчас нет на сайте
по 2-му вопросу, смотря что имеется ввиду под постоянным выполнением скрипта
если надо чтобы php-скрипт постоянно в памяти висел, напиши скрипт что-то типа такого

Code

<?php
   set_time_limit(0); //убираем ограничение времени выполнения скрипта
   $flag = true;
   while($flag){
     //выполняемый код
     //для выхода из цикла $flag = false;
   }  
?>

и консольке этот скрипт надо будет запустить, именно в консоли, а не в браузере

если тебе надо запускать скрипт с определенной периодичностью, то в никсах есть cron для этого, для виндоуса тоже есть разные аналоги-планировщики


Разработка и продвижение сайтов. Дизайн
AGENTX001Дата: Пятница, 04 Февраля 2011, 12:46 | Сообщение # 13
почётный гцупер
Сейчас нет на сайте
lvovand, я имею ввиду регенирацию здоровья. Тут конечно проблема... У меня была мысля сделать так:
Заходит юзер на страницу в 8:30, у него здоровья 55, вряма входа (8:30) сохраняется
Заходит юзер на страницу в 8:35, тут выполняется расчёт (8:35 - 8:30 = 5 минут) скорость регенераци 10 хп в минуту. И становитьсяу юзера 105 хп.
Но мне казалось это замороченым, теперь я вообще неврублюсь(
lvovandДата: Пятница, 04 Февраля 2011, 12:57 | Сообщение # 14
старожил
Сейчас нет на сайте
да, в твоем случае надо сделать скрипт, который бы планировщиком запускался с определенной периодичностью, например, в базе можешь сохранять время последней регенерации и скриптом смотреть разницу между текущим временем и тем, что в базе, если больше определенного, то обновляешь хп и дату регенерации

Разработка и продвижение сайтов. Дизайн
AGENTX001Дата: Пятница, 04 Февраля 2011, 13:38 | Сообщение # 15
почётный гцупер
Сейчас нет на сайте
lvovand, как всё запутанно=( Не смог бы хоть простейший пример накалякать?
lvovandДата: Пятница, 04 Февраля 2011, 14:09 | Сообщение # 16
старожил
Сейчас нет на сайте
да не, начнешь делать, все не так страшно, как-то так примерно

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 и кол-во прошедших с последней регенерации минут и обновляем хп.
А скрипт планировщиком запускаешь с определенным периодом


Разработка и продвижение сайтов. Дизайн
IroNNДата: Пятница, 04 Февраля 2011, 14:48 | Сообщение # 17
постоянный участник
Сейчас нет на сайте
Quote (AGENTX001)
Как создать скрипт, который будет постоянно выполняться на серве?

через сron


пол года учил GML. GameMaker отказывается теперь работать на моем компе...
Здравствуй Construct!
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг