Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Глобальная переменная, создать глобальную переменную 
V
    Опции темы
Prontit
  Дата 9.7.2015, 08:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 87
Регистрация: 19.10.2011

Репутация: 1
Всего: 1



Здравствуйте,

имеется несколько PHP-скриптов, каждый выполняет свою функцию и вызывается разными пользователями в разное время (какие-то дёргаются кроном). Для работы каждый скрипт должен использовать переменную, принимать ее текущее значение и изменять на какое-то другое. Эту переменную необходимо где-то хранить. Я думаю, не очень рационально для одной переменной создавать таблицу (например, на mysql), чтобы там в одном поле хранить это значение. Создать файл, и читать значение из него, тоже вариант не оптимальный. Есть возможность в PHP создать глобальную переменную, чтобы получать/изменять ее значение из любого скрипта на этом сервере?

Может вопрос глупый, но я не смогу найти информацию...
 smile 
Заранее благодарю!
PM MAIL ICQ Skype   Вверх
ksnk
Дата 9.7.2015, 10:48 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 96
Всего: 386



Prontit, memcache?


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
baldina
Дата 9.7.2015, 14:34 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

Репутация: 26
Всего: 101



вопрос глупый - в том смысле, что скрипты, запускаемые кроном, это разные процессы, не связанные между собой, общей переменной у них быть не может. для обмена данными между процессами используется IPC (interprocess communication) - это различные методы (в т.ч. файлы и каналы). 
можно использовать и сетевые службы (в том числе сетевые субд, memcache и т.д.)
php поддерживает и ряд механизмов IPC (в т.ч. каналы, семафоры, разделяемую память), и многие сетевые службы.
во всех случаях есть преимущества и недостатки, поэтому выбор зависит от конкретной задачи. 
а чем вам не нравятся файлы и субд?
PM MAIL   Вверх
Prontit
Дата 9.7.2015, 14:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 87
Регистрация: 19.10.2011

Репутация: 1
Всего: 1



Цитата(baldina @ 9.7.2015,  14:34)
вопрос глупый - в том смысле, что скрипты, запускаемые кроном, это разные процессы, не связанные между собой, общей переменной у них быть не может. для обмена данными между процессами используется IPC (interprocess communication) - это различные методы (в т.ч. файлы и каналы). 
можно использовать и сетевые службы (в том числе сетевые субд, memcache и т.д.)
php поддерживает и ряд механизмов IPC (в т.ч. каналы, семафоры, разделяемую память), и многие сетевые службы.
во всех случаях есть преимущества и недостатки, поэтому выбор зависит от конкретной задачи. 
а чем вам не нравятся файлы и субд?

не то что не нравится, просто думаю что нецелесообразно ради хранения одной переменной поднимать мускуль, создавать базу/таблицу. С файлом тоже самое. Я думал, что можно создать какую-то глобальную переменную, которая будет отовсюду доступна. Мне нужно хранить всего-то одно значение. Ну если нет такой возможности, придется БД или файл использовать.

Вот был бы какой-нибудь конфиг файл в пхп, куда можно было написать 
Код

$_MYVARIABLE['abc'] = 'cba';
, а потом использовать это во всех скриптах на этом серваке:

Код

echo $_MYVARIABLE['abc'];
$_MYVARIABLE['abc'] = 123123;


глупости?)

Добавлено через 50 секунд
Цитата(ksnk @ 9.7.2015,  10:48)
Prontit, memcache?

возможно, не знал о существовании. почитаю. Спасибо!
PM MAIL ICQ Skype   Вверх
baldina
Дата 9.7.2015, 15:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

Репутация: 26
Всего: 101



если у вас еще не используется субд или memcache, поднимать их для этой цели - из пушки по воробьям.
файл имхо наиболее легковесное решение

Код

class PersistentData {
   private static $filename = '/temp/persist.php.dat';
   static function set ($data) {
      file_put_contents (self::$filename, serialize ($data));
   }
   static function get () {
      return unserialize(file_get_contents (self::$filename));
   }
}

use PersistentData as PD;

PD::set (['abc'=>'cba']);
echo PD::get()['abc'];
PD::set (['abc'=>'123123']);

PM MAIL   Вверх
Prontit
Дата 9.7.2015, 16:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 87
Регистрация: 19.10.2011

Репутация: 1
Всего: 1



Цитата(baldina @ 9.7.2015,  15:40)
если у вас еще не используется субд или memcache, поднимать их для этой цели - из пушки по воробьям.
файл имхо наиболее легковесное решение

Код

class PersistentData {
   private static $filename = '/temp/persist.php.dat';
   static function set ($data) {
      file_put_contents (self::$filename, serialize ($data));
   }
   static function get () {
      return unserialize(file_get_contents (self::$filename));
   }
}

use PersistentData as PD;

PD::set (['abc'=>'cba']);
echo PD::get()['abc'];
PD::set (['abc'=>'123123']);

согласен, но доя того чтобы считать/записать переменную необходимо написать неодну строчку кода. Хотелось бы сделать проще. Типа того, как я описал выше.
PM MAIL ICQ Skype   Вверх
Prontit
Дата 13.7.2015, 14:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 87
Регистрация: 19.10.2011

Репутация: 1
Всего: 1



Прочитал про SetEnv в Апаче. Ее потом можно из пхп читать 
Код

$_SERVER["MYVARIABLE"];

и писать 
Код

putenv("MYVARIABLE=dfgdfg");
 ,но значение сохраняется только в текущей сессии. Короче, почти то что нужно)

PM MAIL ICQ Skype   Вверх
_zorn_
Дата 14.7.2015, 06:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1076
Регистрация: 21.8.2007

Репутация: 6
Всего: 12



А крон дергает скрипты через апач ?
PM MAIL   Вверх
Prontit
Дата 14.7.2015, 07:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 87
Регистрация: 19.10.2011

Репутация: 1
Всего: 1



Цитата(_zorn_ @ 14.7.2015,  06:14)
А крон дергает скрипты через апач ?

Не совсем правильно выразился. Скрипт запускается программно из десктопных приложений и пользователями из браузера.
PM MAIL ICQ Skype   Вверх
ksnk
Дата 14.7.2015, 10:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 96
Всего: 386



Цитата(Prontit @  14.7.2015,  07:48 Найти цитируемый пост)
Скрипт запускается программно из десктопных приложений

На компьютере-сервере есть пользователи с десктопными приложениями? 

Цитата(Prontit @  14.7.2015,  07:48 Найти цитируемый пост)
пользователями из браузера

Не смущает, что в этих случаях будут в каждом случае собственные переменные окружения?


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
Prontit
Дата 14.7.2015, 14:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 87
Регистрация: 19.10.2011

Репутация: 1
Всего: 1



Цитата(ksnk @  14.7.2015,  10:42 Найти цитируемый пост)
На компьютере-сервере есть пользователи с десктопными приложениями? 


На компьютерах установлена программа, которая время от времени запрашивает эту переменную у скрипта.


Цитата(ksnk @  14.7.2015,  10:42 Найти цитируемый пост)
Не смущает, что в этих случаях будут в каждом случае собственные переменные окружения? 


Смущает, поэтому и говорю, что это не решение задачи.
PM MAIL ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0517 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.