Одна и та же переменная для каждого php? - PullRequest
5 голосов
/ 03 марта 2011

Мне было интересно, есть ли способ иметь своего рода переменную, которая будет «статической», означающей, что она будет одинаковой для всех пользователей в php? Я знаю, что есть возможность иметь статическую переменную внутри функции в php, но это не то, что я хочу.

Я бы хотел, чтобы все поделились объектом, которым я бы манипулировал в зависимости от требований пользователя. Или другой пример, который похож на то, что я хочу, это способ сохранить переменную, которая подсчитывает количество посетителей (без использования каких-либо манипуляций с файлами или базами данных). Эта переменная будет увеличиваться каждый раз, когда пользователь заходит на мою страницу.

Ура!

Ответы [ 5 ]

5 голосов
/ 03 марта 2011

Без использования файла или базы данных, я думаю, вы могли бы сделать это, используя что-то вроде APC .

$var = 1;
$key = 'myVariable';
apc_store($key, $var);
echo apc_fetch($key); // 1

Если вы хотите увеличить его, вы можете использовать apc_inc()

echo apc_inc($key); // 2

Однако эта переменная не будет сохранена, если кэш очищен (что происходит, когда он заполняется или сервер перезапускается).

3 голосов
/ 04 марта 2011

Проверьте семафоры и разделяемую память и как они работают в PHP.С помощью переменной общей памяти разные процессы (пользователи) могут использовать одно и то же пространство памяти и использовать одни и те же переменные.Вот ссылка на документацию по PHP, с которой можно начать:

http://www.php.net/manual/en/function.shm-get-var.php

1 голос
/ 03 марта 2011

Нет. В некоторых (большинстве?) Настройках каждый запрос обрабатывается в отдельных процессах, которые даже не делят адресное пространство друг с другом. Вам нужна база данных или другой механизм постоянного хранения.

0 голосов
/ 03 марта 2011

Я предполагал, что вы можете использовать переменную сервера Apache.Предположительно, не-Apache серверы будут иметь что-то похожее.

vars можно установить / получить с помощью apache_setenv / apache_getenv .Вопрос заключается в том, будут ли они распространяться на всех дочерних элементов Apache, или же будет выполняться только сценарий PHP.

Конечно, поскольку они установлены динамически, вы потеряете значения всякий раз, когда Apache получитсброс.

0 голосов
/ 03 марта 2011

Я думаю, что вы ищете глобальную переменную.

Что касается счетчиков просмотров страниц, мы обычно делаем это с переменными внутри файлов. Вот хороший пример .

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...