Пожалуйста, обратите внимание, что пользователь заблокирован
С мембером форума nulled, terkin общались, по кодингу, как лучше реализовать ему там один проект.
Посоветовал я ему сделать хранение данных не в файлах, а в сессии - это ведь по сути те же файлы, они так же лежат на сервере и получить данные из них нельзя, чем не альтернатива хранения данных без писанины во временный файл.
А писать ему надо было статус выполнения скрипта в фоновом режиме.
Примеры скрипта которые я в процессе тестов накидал доступны в архиве.
Так вот баг заключается в следующем.
Когда начинаем выполнять скрипт в фоновом режиме мы ему передаём сессию через аякс запрос ранее полученую на пользовательском интерфейсе, начинаем работать с этой сессией что-то там делать каждый 3 секунды к примеру и писать статус в сессию $_SESSION['status'] = date('s')... я писал время и счётчик.
Второй аякс запрос должен получать статус из этой самой сессии, там всё просто так же передаём номер сессии и выводим $_SESSION['status']
Так же в процессе отладки добавил в скрит который работает фоново и в код вывода статуса что бы он эти данные писал в лог файл, какой типа запроса статус или фоновая работа, время и данные сессии.
И вот что интересно получаем в результате работы.
Фоновый скрипт получает сессию и начинает свою работу.
Мы посылаем в это время аякс запрос на статус, т.е. на просто вывод данных этой же сессии и как не удевительно скрипт не можно получить доступ к файлу сессии, а значит и выдать нам её, он просто подвисает и ждёт освобождения.
Как только фоновый скрипт выполняется. Все аякс запросы статуса получают ответы с последними данными которые записаны в $_SESSION['status'] вот так вот
Смотрим лог файл что пишеться в процессе работы:
Посоветовал я ему сделать хранение данных не в файлах, а в сессии - это ведь по сути те же файлы, они так же лежат на сервере и получить данные из них нельзя, чем не альтернатива хранения данных без писанины во временный файл.
А писать ему надо было статус выполнения скрипта в фоновом режиме.
Примеры скрипта которые я в процессе тестов накидал доступны в архиве.
Так вот баг заключается в следующем.
Когда начинаем выполнять скрипт в фоновом режиме мы ему передаём сессию через аякс запрос ранее полученую на пользовательском интерфейсе, начинаем работать с этой сессией что-то там делать каждый 3 секунды к примеру и писать статус в сессию $_SESSION['status'] = date('s')... я писал время и счётчик.
Второй аякс запрос должен получать статус из этой самой сессии, там всё просто так же передаём номер сессии и выводим $_SESSION['status']
Так же в процессе отладки добавил в скрит который работает фоново и в код вывода статуса что бы он эти данные писал в лог файл, какой типа запроса статус или фоновая работа, время и данные сессии.
И вот что интересно получаем в результате работы.
Фоновый скрипт получает сессию и начинает свою работу.
Мы посылаем в это время аякс запрос на статус, т.е. на просто вывод данных этой же сессии и как не удевительно скрипт не можно получить доступ к файлу сессии, а значит и выдать нам её, он просто подвисает и ждёт освобождения.
Как только фоновый скрипт выполняется. Все аякс запросы статуса получают ответы с последними данными которые записаны в $_SESSION['status'] вот так вот
Смотрим лог файл что пишеться в процессе работы:
[start] sname: PHPSESSID sid: d8200f6a532cd72987204088c3cfadec status: [00:26:40] start
[start] sname: PHPSESSID sid: d8200f6a532cd72987204088c3cfadec status: [00:26:43] work 1
[start] sname: PHPSESSID sid: d8200f6a532cd72987204088c3cfadec status: [00:26:46] work 2
[start] sname: PHPSESSID sid: d8200f6a532cd72987204088c3cfadec status: [00:26:49] work 3
[start] sname: PHPSESSID sid: d8200f6a532cd72987204088c3cfadec status: [00:26:52] end
[status] sname: PHPSESSID sid: d8200f6a532cd72987204088c3cfadec status: [00:26:52] end
[status] sname: PHPSESSID sid: d8200f6a532cd72987204088c3cfadec status: [00:26:52] end
[status] sname: PHPSESSID sid: d8200f6a532cd72987204088c3cfadec status: [00:26:52] end
[status] sname: PHPSESSID sid: d8200f6a532cd72987204088c3cfadec status: [00:26:52] end
Вот и весь баг.[start] - это работа скрипта в фоновом режиме
[status] - это мои аякс запросы, которые были сделаны ВО ВРЕМЯ РАБОТЫ ФОНОВОГО СКРИПТА! Заметьте не после, как записалось в лог