PHP & amp; Сессии: есть ли способ отключить блокировку сессий PHP?

Если вы можете использовать синтаксис SQL - скажем, если вы используете LINQ для доступа к полям структуры или массива или напрямую обращаетесь к базе данных с таблицей «Алфавит» только с одним полем «Письмо», вы может адаптировать следующий код:

SELECT A.Letter, B.Letter, C.Letter
FROM Alphabet AS A, Alphabet AS B, Alphabet AS C
WHERE A.Letter<>B.Letter AND A.Letter<>C.Letter AND B.Letter<>C.Letter
AND A.Letter<B.Letter AND B.Letter<C.Letter

Это вернет все комбинации из 3 букв, несмотря на то, сколько букв у вас в таблице «Алфавит» (это может быть 3, 8, 10, 27 и т. д.). .

Если все, что вы хотите, это все перестановки, а не комбинации (т. е. вы хотите, чтобы «ACB» и «ABC» считались разными, а не отображались только один раз) просто удалите последнюю строку (AND ) и это сделано.

Post-Edit: после повторного чтения вопроса я понимаю, что необходим алгоритм general , а не только определенный для случая выбора 3 Предметы. Ответ Адама Хьюза - полный, к сожалению, я не могу его проголосовать (пока). Этот ответ прост, но работает только тогда, когда вы хотите точно 3 элемента.

16
задан hakre 20 August 2013 в 15:33
поделиться

2 ответа

Кроме использования session_write_close() ? Ни одного, о котором я знаю.

0
ответ дан 30 November 2019 в 21:02
поделиться

Вы не хотите отключать его ... Если вы это сделаете, вы потенциально можете столкнуться со всевозможными странными проблемами, когда вы входите в одно окно, выходите из системы в другом, а затем оказаться в несогласованном состоянии ... Блокировка существует по какой-то причине ...

Вместо этого закройте сеанс очень рано, если вы знаете, что не собираетесь писать в него в этом запросе.Как только вы запустите его, вы сможете читать из него весь запрос (если вы не перезапустите его или не выполните какие-то другие специальные действия) даже после вызова session_write_close . Итак, что вы должны сделать, это проверить запрос, чтобы увидеть, является ли это запросом на запись, а если нет, просто закройте его сразу после его открытия. Обратите внимание, что это может иметь некоторые неблагоприятные последствия, если вы позже попытаетесь записать в сеанс (для защиты Captcha, CSRF или чего-то еще), поэтому используйте с осторожностью ...

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

16
ответ дан 30 November 2019 в 21:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: