Уважаемы Модераторы! Ну хорош надо мной издеваться!!! Я прекрасно знаю что такое суперглобальные массивы. Допускаю, что не знаю некоторых особенностей работы с ними. Но то, что это именованный массив, содержащий значения я понимаю. Я не понял вот этого: . Я В начале этой темы выложил свой код, потом, после совета Игоря я написал тестовый код (упрощенный) чтобы просто сделать работоспособную передачу переменной сессии. Потом по пунктам расписал что я делаю и как я это понимаю. В итоге никто не читает мои посты и я получаю такой вопрос:
Тогда давай вернёмся к истокам, ибо на 3-ей странице уже никто не знает о чём речь. Тут дискуссия вертелась вокруг сессий, НО, *ЛЯ! Сессии в их родной реализации, характерны блокированием сессионного файла. Долгие запросы и сессии поэтому в контрах друг с другом. Пока одна "страница" не завершит работу, другая "страница" этого же пользователя будет висеть и ждать!!! Неважно аякс это или *уякс. Вывод: в долгом процессе не используй сессии или вызывай session_write_close() где-то в начале. Помещай "процент прогресса" в какое-нибудь место, которое не боится блокировки. — К.О. Вот тебе простое как валенок решение: долгий процесс-писатель пишет в лог-файл, после каждой операции записи делает flush чтобы данные реально сбросились на диск. Наблюдающий процесс читает размер файла лога и делает свои предположения о прогрессе. Читатель не боится блокировки в таком случае. Пусть писатель удаляет за собой лог в конце, а читатель не найдя лога поймёт, что дело сделано.
Я об этом и пытался сказать, но Игорь упорно предлагал сессии, и я подумал, может он знает что-то, что я не знаю
Спасибо большое! Я реализовал это через БД, пишу в неё раз в 200 итераций. Просто очень хотелось изучить другие походы, может они проще и быстрее. Ну та же фигня .
@mkramer я как-бэ давно написал, что переменные сессии сейвятся после завершения работы скрипта. Из этого можно сделать вывод, что сохранение данных в сессию должно носить принудительный характер. Такой алгоритм решает задачу через сессии: PHP: for ($i = 0; $i < 100; $i++) { session_start(); $_SESSION['k'] = $i; session_write_close(); sleep(1); } но это же не раздел "сделайте за меня" %) плюс в том, что в скрипте Б достаточно стартовать сессию, не надо лезть в базу или файлы. Но похоже на говнокод, я за файлы =)