Каждый доступ к $ _SESSION сразу связал i/o с файловой системой?

1) Ваша конфигурация об auth_method выглядит хорошо.

2) Вот скрипт на python, который я использовал и обновил для внешней аутентификации для ejabberd.

#!/usr/bin/python

import sys
from struct import *
import os

def openAuth(args):
    (user, server, password) = args
    # Implement your interactions with your service / database
    # Return True or False
    return True

def openIsuser(args):
    (user, server) = args
    # Implement your interactions with your service / database
    # Return True or False
    return True


def loop():
    switcher = {
        "auth": openAuth,
        "isuser": openIsuser,
        "setpass": lambda(none): True,
        "tryregister": lambda(none): False,
        "removeuser": lambda(none): False,
        "removeuser3": lambda(none): False,
    }

    data = from_ejabberd()
    to_ejabberd(switcher.get(data[0], lambda(none): False)(data[1:]))
    loop()

def from_ejabberd():
    input_length = sys.stdin.read(2)
    (size,) = unpack('>h', input_length)
    return sys.stdin.read(size).split(':')

def to_ejabberd(result):
    if result:
        sys.stdout.write('\x00\x02\x00\x01')
    else:
        sys.stdout.write('\x00\x02\x00\x00')
    sys.stdout.flush()

if __name__ == "__main__":
    try:
        loop()
    except error:
        pass

Я не создал связь с Ejabberd from_ejabberd() и to_ejabberd(), и, к сожалению, не могу найти источники.

6
задан zx81 3 August 2014 в 23:48
поделиться

3 ответа

Как Matt записал, пишет это в конце выполнения сценария по умолчанию. Можно читать об этом здесь в session_write_close ()

Данные сессии обычно хранятся после Вашего сценария, завершенного без потребности назвать session_write_close (), но поскольку данные сессии заблокированы для предотвращения параллельных записей, которыми только один сценарий может управлять на сессии в любое время. При использовании framesets вместе с сессиями Вы испытаете кадры, загружающиеся один за другим из-за этой блокировки. Можно уменьшить время, должен был загрузить все кадры путем окончания сессии, как только все изменения в переменных сеанса сделаны.

3
ответ дан 17 December 2019 в 04:52
поделиться

Это пишет это и конец процесса на моей установке. Я сделал новое _ session_ write_method:

public function _session_write_method($id, $sess_data) {
    var_dump(file_put_contents('/var/www/public_html/testing.txt', serialize($sess_data)));
    return(true);
}

и затем:

$_SESSION['foo'] = 'bar';
while(true)

Я выполнил сценарий, ожидал несколько секунд и затем работал 'sudo, уничтожают' на идентификаторе процесса. Это не записало сериализированные данные в файл. Я выполнил его снова без бесконечного цикла, и я добрался: интервал (22) в самом конце страницы и testing.txt успешно писался в и содержался: s:14: "foo|s:3: "панель"";;

2
ответ дан 17 December 2019 в 04:52
поделиться

Зависит от обработчика. Можно записать собственный обработчик, чтобы удостовериться, что это только происходит так часто, как Вам нравится, если Вы хотите быть абсолютно уверенными в поведении. Существует 6 обратных вызовов, используемых для управления переменными сеанса. Тот звонил, "запись" не должна выполнять реальный ввод-вывод и запись, что файл сессии мог ожидать до вызова для "закрытий". Это - деталь реализации, которая, как я сказал, зависит от обработчика.

0
ответ дан 17 December 2019 в 04:52
поделиться
Другие вопросы по тегам:

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