Временные переменные
Модератор: immortal
- Bagir
- Сообщения: 1610
- Зарегистрирован: Вт сен 17, 2013 6:46 pm
- Откуда: Ярославская область город Углич
- Благодарил (а): 212 раз
- Поблагодарили: 373 раза
Временные переменные
При работе кода нужно где то временно сохранить нужные записи. Потом, при следующих запусках этого кода, или вообще другого кода, нужно их прочитать и стереть.
Другими словами, при выполнении кода нужно создать переменную с указанным именем, а потом получить ее значение, если она существует, и уничтожить (либо обнулить) ее.
Таких переменных мне требуется много и с разными уникальными именами. Думал припахать сюда registerEvent, и в детали писать свои значения. Но как потом прочитать эти детали? Я нашел только функцию registeredEventTime чтобы получить время. Есть ли способ получить детали, или придется за ними слазать в базу данных?
А может кроме Event есть еще кармашек?
Другими словами, при выполнении кода нужно создать переменную с указанным именем, а потом получить ее значение, если она существует, и уничтожить (либо обнулить) ее.
Таких переменных мне требуется много и с разными уникальными именами. Думал припахать сюда registerEvent, и в детали писать свои значения. Но как потом прочитать эти детали? Я нашел только функцию registeredEventTime чтобы получить время. Есть ли способ получить детали, или придется за ними слазать в базу данных?
А может кроме Event есть еще кармашек?
- Bagir
- Сообщения: 1610
- Зарегистрирован: Вт сен 17, 2013 6:46 pm
- Откуда: Ярославская область город Углич
- Благодарил (а): 212 раз
- Поблагодарили: 373 раза
Re: Временные переменные
Пока что выбрал вариант с registerEvent($eventName, $details='мои детали', $expire_in=1); Создаю событие сроком на 1 день. Для моей задачи этого достаточно. Пишу в него нужные данные, а потом мне потребуется получить эти данные по имени события. Для этого напишу функцию registeredEventDetails($eventName) по аналогии с registeredEventTime($eventName). И еще registeredEventErase($eventName)
Если я сбился с пути истинного и ушел в дебри дремучие, пожалуйста направьте на дорогу правильную )))
Если я сбился с пути истинного и ушел в дебри дремучие, пожалуйста направьте на дорогу правильную )))
- sergejey
- Site Admin
- Сообщения: 4283
- Зарегистрирован: Пн сен 05, 2011 6:48 pm
- Откуда: Минск, Беларусь
- Благодарил (а): 75 раз
- Поблагодарили: 1553 раза
- Контактная информация:
Re: Временные переменные
На самом деле, работа с событиями как-то недописаной выглядит
указанные функции будут вполне к месту и я внесу их в общую ветку, как только будут написаны.

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
- Bagir
- Сообщения: 1610
- Зарегистрирован: Вт сен 17, 2013 6:46 pm
- Откуда: Ярославская область город Углич
- Благодарил (а): 212 раз
- Поблагодарили: 373 раза
Re: Временные переменные
Вот набросок для получения деталей. Работает, куда он денется. Вот только надо подумать, может сделать одну общую функцию, которая будет получать все одним массивом, а не только детали или время. Пока что для эксперимента с временными переменными я остановился на этом варианте.
Сейчас проверю его в своей задаче. По ходу дела будет видно на сколько он удобен.
Код: Выделить всё
// Получить детали события по его имени
function registeredEventDetails($eventName) {
$even=SQLSelectOne("SELECT * FROM events WHERE EVENT_NAME='".$eventName."'");
if (is_array ($even )) {
return $even['DETAILS'];
} else {
return false;
}
}
- Bagir
- Сообщения: 1610
- Зарегистрирован: Вт сен 17, 2013 6:46 pm
- Откуда: Ярославская область город Углич
- Благодарил (а): 212 раз
- Поблагодарили: 373 раза
Re: Временные переменные
Все вполне удобно. Из полезного у событий я нашел не так много данных, чтобы получать их массивом. Время уже есть, и не хватало разве что деталей. Так что registeredEventDetails($eventName) вполне достаточно. Если добавлять ее в штат, то может стоит разве что подумать над строчкой return false; Мне показалось так будет удобно. Главное , чтобы функция вела себя так же как и остальные. Я использовал SQLSelectOne() для подстраховки. Выборка идет по Имени. А оно не может повториться.
Еще пригодится функция удаления. Поменять в запросе SELECT на DELETE несложно, но SQLSelectOne() как бы тут не кстати. Как лучше?
Еще пригодится функция удаления. Поменять в запросе SELECT на DELETE несложно, но SQLSelectOne() как бы тут не кстати. Как лучше?
- xor
- Сообщения: 2001
- Зарегистрирован: Сб ноя 22, 2014 8:45 pm
- Благодарил (а): 272 раза
- Поблагодарили: 619 раз
Re: Временные переменные
Ещё бы хорошо в комплект функций для Ивентов добавить проверялку времени существования.
Очень удобно
ЗЫ. Кто не знает, Expired задается в днях, соответственнно, если нужен интервал меньше, нужно указывать долю от суток.
10 минут --> 1/24/6=0,0069444444444444
Очень удобно
Код: Выделить всё
//возвращает EXPIRE как timestamp
//ex: date('Y-m-d H:i:s',registeredEventExpire('myEvent'))
function registeredEventExpire($eventName){
$even=SQLSelectOne("SELECT UNIX_TIMESTAMP(EXPIRE) t FROM events WHERE EVENT_NAME='".$eventName."'");
if (is_array ($even )) {
return $even['EXPIRE'];
} else {
return false;
}
}
// Удалить событие по его имени
function registeredEventDelete($eventName) {
$fn = SQLExec("DELETE FROM events WHERE EVENT_NAME='".$eventName."'");
return $fn;
}
10 минут --> 1/24/6=0,0069444444444444
Код: Выделить всё
registerEvent($eventName, $details='',0.0069);
win10 connect https://connect.smartliving.ru/profile/303
- Vovix
- Сообщения: 1155
- Зарегистрирован: Пн янв 27, 2014 1:43 am
- Откуда: г.Ижевск
- Благодарил (а): 60 раз
- Поблагодарили: 531 раз
- Контактная информация:
Re: Временные переменные
Сергей, наберусь наглости напомнить!sergejey писал(а):На самом деле, работа с событиями как-то недописаной выглядитуказанные функции будут вполне к месту и я внесу их в общую ветку, как только будут написаны.
... и функции уже написаны выше, уважаемыми xor и Bagir
А именно:
к настоящему времени в системе есть функции (имеющие отношения к Event по имени) -
registerevent
registeredeventtime
subscribetoevent - не знаю(предполагаю тока) что делает!?
unsubscribefromevent - не знаю(предполагаю тока) что делает!?
И не хватает: registeredEventDetails, registeredEventExpire и registeredEventDelete
хотя возможно две имеющиеся, но не имеющие описания, в какой-то степени могут быть использованы
Последний раз редактировалось Vovix Пт фев 16, 2018 11:39 am, всего редактировалось 1 раз.
Мой -CONNECT-
Windows 7(PHP 7.2) + Raspberry Pi(освещение на 1-Wire) + MP751(управление) + ESP8266(сенсоры) + LAN(сенсоры)
-=: Если вам помогло моё сообщение, нажмите кнопку "Поблагодарить за сообщение автора: Vovix" (кнопка Спасибо) справа! :=-
Windows 7(PHP 7.2) + Raspberry Pi(освещение на 1-Wire) + MP751(управление) + ESP8266(сенсоры) + LAN(сенсоры)
-=: Если вам помогло моё сообщение, нажмите кнопку "Поблагодарить за сообщение автора: Vovix" (кнопка Спасибо) справа! :=-
- nick7zmail
- Сообщения: 7573
- Зарегистрирован: Пн окт 28, 2013 8:14 am
- Откуда: Екатеринбург
- Благодарил (а): 121 раз
- Поблагодарили: 2010 раз
Re: Временные переменные
Эти функции работают только для модулей. Это подписка и отписка на разные ивэнты (HOURLY, SAY) модулей. В модуле в свою очередь есть функция (processSubscription вроде, или как то так), вызываемая при любых ивэнтах, и в неё передаётся имя ивэнта.Vovix писал(а): subscribetoevent - не знаю(предполагаю тока) что делает!?
unsubscribefromevent - не знаю(предполагаю тока) что делает!?
хотя возможно две имеющиеся но имеющие описания в какой-то степени могут быть использованы
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".

>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
- Vovix
- Сообщения: 1155
- Зарегистрирован: Пн янв 27, 2014 1:43 am
- Откуда: г.Ижевск
- Благодарил (а): 60 раз
- Поблагодарили: 531 раз
- Контактная информация:
Re: Временные переменные
Тем более наверно нужны эти (собрал их вместе, это не моё творчество):nick7zmail писал(а):Эти функции работают только для модулей. Это подписка и отписка на разные ивэнты (HOURLY, SAY) модулей. В модуле в свою очередь есть функция (processSubscription вроде, или как то так), вызываемая при любых ивэнтах, и в неё передаётся имя ивэнта.Vovix писал(а): subscribetoevent - не знаю(предполагаю тока) что делает!?
unsubscribefromevent - не знаю(предполагаю тока) что делает!?
хотя возможно две имеющиеся но имеющие описания в какой-то степени могут быть использованы
Код: Выделить всё
/**
* Комплект из трех функций работы с событиями Event
*
* @param string $eventName имя события (Event'а)
* @return
* 1) registeredEventDetails ($eventName)
* $even['DETAILS'] || Boolean: false
* 2) registeredEventExpire ($eventName)
* $even['EXPIRE'] || Boolean: false
* 3) registeredEventDelete($eventName)
* результат попытки удаления из таблицы бызы данных
*/
// Получить детали события по его имени
function registeredEventDetails($eventName) {
$even=SQLSelectOne("SELECT * FROM events WHERE EVENT_NAME='".$eventName."'");
if (is_array ($even )) {
return $even['DETAILS'];
} else {
return false;
}
}
//возвращает EXPIRE как timestamp
//ex: date('Y-m-d H:i:s',registeredEventExpire('myEvent'))
function registeredEventExpire($eventName){
$even=SQLSelectOne("SELECT UNIX_TIMESTAMP(EXPIRE) t FROM events WHERE EVENT_NAME='".$eventName."'");
if (is_array ($even )) {
return $even['EXPIRE'];
} else {
return false;
}
}
// Удалить событие по его имени
function registeredEventDelete($eventName) {
$fn = SQLExec("DELETE FROM events WHERE EVENT_NAME='".$eventName."'");
return $fn;
}
- Рейтинг: 1.16%
Мой -CONNECT-
Windows 7(PHP 7.2) + Raspberry Pi(освещение на 1-Wire) + MP751(управление) + ESP8266(сенсоры) + LAN(сенсоры)
-=: Если вам помогло моё сообщение, нажмите кнопку "Поблагодарить за сообщение автора: Vovix" (кнопка Спасибо) справа! :=-
Windows 7(PHP 7.2) + Raspberry Pi(освещение на 1-Wire) + MP751(управление) + ESP8266(сенсоры) + LAN(сенсоры)
-=: Если вам помогло моё сообщение, нажмите кнопку "Поблагодарить за сообщение автора: Vovix" (кнопка Спасибо) справа! :=-
- sergejey
- Site Admin
- Сообщения: 4283
- Зарегистрирован: Пн сен 05, 2011 6:48 pm
- Откуда: Минск, Беларусь
- Благодарил (а): 75 раз
- Поблагодарили: 1553 раза
- Контактная информация:
Re: Временные переменные
Тут небольшая путаница возникает с событиями... Просто их два типа. Один тип, это системная шина событий, которая используюется модулями и ядром для инициализации каких-либо действий (функции subscribeToEvent, processSubscriptions и обработчики в модулях типа propertySetHandle). Второй тип событий никак не связан с первым и представляет собой универсальный приёмник и обработчик пользовательских событий. В админке это раздел События и указанные в предыдущем сообщении функции. В модуле событий, кстати, можно связать их поступление с каким-нибудь объектом, вывести в виде дерева, а для отправки событий можно использовать API вида:
Код: Выделить всё
/api/events/<PATH/TO/EVENT>?param1=value1¶m2=value2 -- сохранения события с параметрами
Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги