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

Anshlag - калужское объединение друзей - туристов. Отдых и путешествия по Карелии, туризм, водные походы. Отчеты о походах, рассказы туристов, новости туризма. Форум, гостевая, походные фотографии.



  
 Четверг, 18 июля 2019, 16:22:25 

PHP сессии
Приложение к статье о параллельном выполнении

Быстрый переход ...

» PHP сессии
» Пример работы с сес...
» Параллельное выполн...
» Параллельное выполн...
» Приложение к статье...

Приложение к статье о параллельном выполнении

Давайте реализуем тот же самый алгоритм, но с помощью сессий.

Постановка задачи:
  • есть переменная $flag в сессиях пользователя
  • если она равна нулю, то ее надо установить в единицу и произвести какое-нибудь действие по этому поводу (если $flag был равен нулю). В качестве действия будем создавать файл со случайным именем такого типа: [случайное число].php-test.

    Событием для выполнения проверки и создание файла будет опять кнопочка SUBMIT, который злой пользователь опять нажмет 2 раза. После выполнения программы вы обнаружите, что будет создан только один файл. Таким образом, в программах, которые используют сессии, больших проблем из-за параллельного выпонения скриптов, нет.

    Приведенная ниже программа идентифицирует всех людей по одной и той же сессии, со случайным номером 0123456789abcdef0123456789abcdef.


    <? /* перед началом программы создайте каталог tmp (см. конец скрипта) создание файла со случайным именем в этом каталоге символизирует некое действие */ session_id("0123456789abcdef0123456789abcdef"); session_start(); session_register("flag"); if (!isset($flag)) $flag=0; switch ($c) { case "": echo "FLAG=$flag <a href=$PHP_SELF?c=clear>сбросить в нуль</a> <form action=$PHP_SELF> <input type=hidden name=c value='submit'> <input type=submit> </form>"; break; case "clear": $flag=0; header("Location: $PHP_SELF"); break; case "submit": if ($flag==0) { sleep(5); $flag=1; srand ((double) microtime() * 1000000); $filename= "tmp/".rand(0,9999).".php-test"; fclose(fopen($filename,"w+")); header("Location: $PHP_SELF"); } else echo "Не выполнено, FLAG не равен нулю."; break; } ?>





  • Комментарии
    2008-07-10 09:14 - Administrator
    http://php.spb.ru/php/session.html
     

    Прокомментировать
    Хотите оставить свои комментарии? Зарегистрируйтесь на нашем сайте!

     
    (c) Anshlag 2002 - 2008