Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Помогите решить задачу с циклом

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: Как сохранить переменную при зацикленном выполнение условия
Virus1850
Отправлено: 29 Марта, 2017 - 23:33:47
Post Id


Новичок


Покинул форум
Сообщений всего: 38
Дата рег-ции: Февр. 2012  


Помог: 0 раз(а)

[+]


Ребят, может кто сталкивался или знает как решить проблему, суть такова - есть переменная при изменении которой должно выполняться действие, но выполняться только один раз, до следующего изменения этой переменной (значение переменной может быть не цифровым). Например:

PHP:
скопировать код в буфер обмена
  1. $random = "ололо"; // Текущее значение
  2. $random = "трололо"; // Значение через час
  3. $random = "тратата"; // Значение через 2 часа и т.д.


Пока эту проблему решал так:
- заносил значение переменной в файл .txt
- потом вытягивал из файла ток уже через другую переменную,
- дальше сравнивал через if - т.е. если текущее значение совпадало со значением из файла, ничего не происходило, как только текущее значение отличалось от того, что записано в файл, выполнялось нужное действие и файл txt перезаписывался.
Но способ дикий, кажется должны быть иные пути решения...
Да, проверка переменной происходит постоянно, т.е. стоит таймер который обновляет скрипт каждую минуту...
 
 Top
DlTA
Отправлено: 30 Марта, 2017 - 00:24:27
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010  


Помог: 53 раз(а)




ээээм, а приме вашего кода??
непонятно зачем в файл сохранять?

а для сравнения лучше исходный текст пропустить через функцию md5() (если текст большой)
 
 Top
Virus1850
Отправлено: 30 Марта, 2017 - 01:48:54
Post Id


Новичок


Покинул форум
Сообщений всего: 38
Дата рег-ции: Февр. 2012  


Помог: 0 раз(а)

[+]


DlTA пишет:
ээээм, а приме вашего кода??
непонятно зачем в файл сохранять?

а для сравнения лучше исходный текст пропустить через функцию md5() (если текст большой)


PHP:
скопировать код в буфер обмена
  1. $random = **** ; // периодически присваивается новое значение....
  2.  
  3. $db = 'db.txt';
  4. $r = fopen($db, 'r+');
  5. $random_db=fread($r,filesize($db));
  6. print Значение в базе: $random_db";
  7. fclose($r);
  8.  
  9. if ($random == $random_db) {
  10.  
  11.     echo "Изменений нет";
  12.  
  13. }   else {
  14.  
  15. ТУТ ВЫПОЛНЯЕТСЯ НУЖНОЕ ДЕЙСТВИЕ
  16.  
  17.    $data = $random;
  18.    $fh = fopen($db, "r+");
  19.    $success = fwrite($fh, $data);
  20.    fclose($fh);
  21.  
  22. }


Этот код по средством js обновляется раз в минуту. Как только значение $random изменяется, скрипт выполняется + файл перезаписывается на текущее значение переменной, что бы выполнение не зацикливалось, если значение совпадает со значением в файле, ничего не происходит.
 
 Top
Строитель Модератор
Отправлено: 30 Марта, 2017 - 12:50:17
Post Id



Участник


Покинул форум
Сообщений всего: 1580
Дата рег-ции: Февр. 2014  
Откуда: Украина


Помог: 73 раз(а)




DlTA пишет:
непонятно зачем в файл сохранять?
А как вы предлагаете выполнять сравнение без сохранения куда либо? Может быть я ошибаюсь, но я вижу необходимость сохранения, если не в файл, то в базу.
 
 Top
Virus1850
Отправлено: 30 Марта, 2017 - 13:23:34
Post Id


Новичок


Покинул форум
Сообщений всего: 38
Дата рег-ции: Февр. 2012  


Помог: 0 раз(а)

[+]


Строитель пишет:
DlTA пишет:
непонятно зачем в файл сохранять?
А как вы предлагаете выполнять сравнение без сохранения куда либо? Может быть я ошибаюсь, но я вижу необходимость сохранения, если не в файл, то в базу.


Я это к тому, что, возможно есть иные способы решения такой задачи. Что мне нужно, я описал и предложил свой путь решения, но он меня не совсем устраивает... Если иных способов нет, буду использовать этот...
 
 Top
Строитель Модератор
Отправлено: 30 Марта, 2017 - 14:06:47
Post Id



Участник


Покинул форум
Сообщений всего: 1580
Дата рег-ции: Февр. 2014  
Откуда: Украина


Помог: 73 раз(а)




Virus1850 пишет:
Я это к тому, что, возможно есть иные способы решения такой задачи. Что мне нужно, я описал и предложил свой путь решения, но он меня не совсем устраивает... Если иных способов нет, буду использовать этот...
Ну почему нет? - любую задачу можно решить разными способами. Вы вроде бы забыли уточнить, что вас не устраивает в вашем варианте.
 
 Top
Virus1850
Отправлено: 30 Марта, 2017 - 15:22:35
Post Id


Новичок


Покинул форум
Сообщений всего: 38
Дата рег-ции: Февр. 2012  


Помог: 0 раз(а)

[+]


Строитель пишет:
Virus1850 пишет:
Я это к тому, что, возможно есть иные способы решения такой задачи. Что мне нужно, я описал и предложил свой путь решения, но он меня не совсем устраивает... Если иных способов нет, буду использовать этот...
Ну почему нет? - любую задачу можно решить разными способами. Вы вроде бы забыли уточнить, что вас не устраивает в вашем варианте.

Скорость выполнения. Да, в идеале так можно юзать без проблем, но, если мне нужно отслеживать изменение переменной практически онлайн, т.е. отправлять запросы на проверку каждую сек. А это уже лишняя нагрузка и время на выполнения всех действий.
 
 Top
Строитель Модератор
Отправлено: 30 Марта, 2017 - 16:18:05
Post Id



Участник


Покинул форум
Сообщений всего: 1580
Дата рег-ции: Февр. 2014  
Откуда: Украина


Помог: 73 раз(а)




Virus1850, если бы речь шла о сравнении данных в процессе выполнения скрипта, то я бы предложил использование статической переменной в теле пользовательской функции (вместо текст.файла), а на вход этой функции передавать данные, которые динамически изменяются. В итоге код имел бы такой вид :
Спойлер (Отобразить)
 
 Top
Virus1850
Отправлено: 30 Марта, 2017 - 16:23:34
Post Id


Новичок


Покинул форум
Сообщений всего: 38
Дата рег-ции: Февр. 2012  


Помог: 0 раз(а)

[+]


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


Спасибо за наводку. Буду разбираться.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB