2010-09-21 1 views
1

Я строю webapp. HTML + AJAX < -> PHP < -> MySQL; очень традиционный. То, что мне нужно сделать, - это состояние, которое могут читать все сеансы, и что-то, что управляет изменениями состояния, даже если на сайте нет пользователей.Как синхронизировать состояние между сеансами PHP?

Простым примером может служить счетчик. Мы запускаем счетчик, начинающийся с нуля, а затем всякий раз, когда какой-либо пользователь подключается к веб-сайту, они видят текущее значение счетчика. Даже если никто не смотрит на сайт, счетчик все равно увеличивается. Каждый, кто смотрит на веб-сайт, видит одно и то же значение одновременно.

Каков наилучший способ реализации этого? Похоже, я должен быть в состоянии сделать это, не прибегая к хранению значений в базе данных, и каждый из них запрашивает базу данных для состояния. Но я не знаю, как работать с PHP, когда никто не подключен. Нужен ли мне четвертый компонент? У меня нет собственного веб-сервера, все это размещено на каком-то месте, которое настраивает для меня среду, но у них, похоже, есть самые современные и разумные вещи, которые можно было бы ожидать в таком стеке.

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

+0

Если вам требуется разделяемое состояние между сеансами, вам понадобится постоянное (ish) хранилище, такое как база данных, или если это слишком много, вы можете использовать плоские файлы. Предполагается, что сеансы PHP независимы. – NullUserException

ответ

1

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

http://en.wikipedia.org/wiki/Cron

Обычно веб-хосты будут иметь планировщик приложение хрон в своей панели управления, которая позволяет вам выбрать то, что скрипт для запуска и в какие промежутки времени.

+0

Возможно, для того, что я хочу сделать, это глобальный PHP. Я посмотрю на доступ к cron. Благодарю. –

1

Не могли бы вы объяснить, что именно вы хотите сделать в фоновом режиме? В любом случае, похоже, что вам захочется заглянуть в настройку задачи cron для выполнения скрипта php на основе консоли для выполнения этой дополнительной функции. Вы можете запланировать выполнение задач cron, сколько угодно. Настройка задач cron может быть выполнена с любой панели управления, которая стоит ее соли (cPanel, Plesk, Exim, что угодно).

Насколько на самом деле держать эту информацию доступной для всех сеансов в главной фронтальной PHP коде, вы можете хранить информацию в кэше (с помощью Memcache)

+0

Ну, пример таймера - очень упрощенная форма того, что я хочу сделать. В принципе, у меня есть график происходящих событий, и я хочу, чтобы каждый, кто просматривает сайт, видит сайт в одном и том же состоянии по временной шкале. Это не очень много информации, просто индекс действительно, так что Memcache, вероятно, перебор. –

+0

Вы будете удивлены, насколько легко получить демон Memcache и запустить его, и как просто использовать API. –

+0

Хорошо, я посмотрю на это и посмотрю. Благодарю. –

1

Что делает увеличение счетчика?

Вы можете использовать работу cron.

Чтобы состояние сохранялось во всех соединениях, оно либо должно быть сохранено в базе данных, либо в виде файла (который в действительности имеет база данных).

+0

Я не уверен, вот почему я спрашивал. Кажется, что работа cron - это путь. Благодарю.Различные состояния, в которых он может находиться, будут находиться в таблице в БД, но индекс в текущее состояние будет часто меняться. –

+0

@jeffamaphone Удачи и счастливого кодирования! – alex