Обновление игры PHP - PullRequest
       10

Обновление игры PHP

2 голосов
/ 29 марта 2009

Скажем, у меня есть игра на PHP, которая является игрой, приносящей деньги, и каждый день цены на предметы меняются на рынке.

Как бы я сделал так, чтобы цены в базе данных автоматически обновлялись каждый день? Буду ли я устанавливать на сервер программу, которая определяет, когда прошло 24 часа, а затем запускает файл PHP, который выполняет обновление? Или там есть другой способ?

Edit: Дело в том, ребята, я на самом деле не владею сервером, который я арендую у хостинговой компании, поэтому у меня нет доступа к командной строке: s

Спасибо, Станни

Ответы [ 10 ]

8 голосов
/ 29 марта 2009

Предполагая, что вы работаете в системе Unix, вы должны установить ежедневный cronjob. Для этого запустите «crontab -e» и введите что-то вроде:

9 21 * * * /path/to/your/script

Это будет работать в 21:09 каждый день.

4 голосов
/ 29 марта 2009

Поскольку у вас, вероятно, нет доступа к cron, я проверю, сколько времени прошло каждый раз, когда кто-то загружает страницу. Если прошло 24 часа, вызовите функцию обновления. Если прошло 48 часов, позвоните дважды. Если никто не загружает страницу, то не имеет значения, была ли вызвана функция обновления или нет, потому что никто не ищет;)

Или вы можете настроить компьютер дома для удаленного вызова update.php каждые 24 часа. Вы можете сделать это с помощью задания cron и wget или, если вы используете Windows, вы можете использовать планировщик задач.

Я думаю, что первый вариант будет работать лучше всего. Вызывайте функцию обновления при каждой загрузке страницы и обновляйте только по истечении 24-часовой отметки. Если вы пишете это правильно, не имеет значения, обновляется ли он с точной отметкой в ​​24 часа.

4 голосов
/ 29 марта 2009

Если у вас нет доступа к командной строке, вы можете добавить изображение 1x1 на сайт, который вызывает скрипт php, который проверяет, нужно ли что-то обновлять.

что-то вроде

<img style="width: 1px; height: 1px; visibility: hidden" src="cron.php">

В cron.php вы проверяете, нужно ли обновлять данные.

3 голосов
/ 29 марта 2009

Используйте webcron :) http://www.webcron.org/index.php?lang=en

Или вот хороший список: http://www.onlinecronservices.com/

3 голосов
/ 29 марта 2009

Вы хотите настроить «задание cron» или файл PHP, который будет запускаться с заданным интервалом.

Проверьте эту статью для получения дополнительной информации.

Самое лучшее в заданиях cron - это то, что вы не ограничены небольшим подмножеством функций, доступных, например, в хранимых процедурах. Вы можете использовать любую логику, которая вам нравится! :)

2 голосов
/ 29 марта 2009

Если у вас есть скрипт, который обновляет цены, и все, что вам нужно, это запускать его каждый день, используйте Cron (linux) или по команде (windows).

1 голос
/ 11 апреля 2009

Забудь все это. Нет причин делать что-либо подобное.

Все, что вам нужно сделать, это проверять каждый раз, когда кто-то вызывает веб-страницу. Вы отслеживаете дату, и когда текущая дата больше не соответствует вашей переменной, вы запускаете то, что получает новые данные. Бам! Конечно, это не очень масштабируемо, но это хорошо для маленькой игры.

1 голос
/ 29 марта 2009

Как вы могли не «иметь доступ к командной строке»? Я не могу вспомнить ни одного хоста, который не разрешает доступ по SSH. Доступ к cron - это отдельная история, но они ДОЛЖНЫ это также допустить. Если нет - найдите нового хозяина!

1 голос
/ 29 марта 2009

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

Итак, быстрый псевдокод:

function verify_often(){
  if (last_update_in_db() != today() ){
    update_db();
    run_periodic_function(); 
  }
  return 0;
}

Этот метод требует только классической комбинации PHP и MySQL.

0 голосов
/ 29 августа 2010

Я не мог понять, как ответить на ответ Алекса, но я хотел бы упомянуть кое-что, что они сказали. Когда они сказали: «Проверяйте, сколько времени прошло каждый раз, когда кто-то загружает страницу», я чувствую, что вам не нужно проверять это каждый раз, когда страница загружается. Лучший способ сделать это - проверить, когда пользователь входит в систему. Если это продолжается более 24 часов, пока пользователи все еще входят в систему, это не имеет значения для описанного сценария. В следующий раз, когда кто-то войдет в систему, цены на товары изменятся.

...