|
PHP, сессии, БД, ajax
|
|||
---|---|---|---|
#18+
Помогите! Есть подключаемый файл connect.php в котором подключается БД Mysql (mysqli). Линк, возвращаемый функцией mysqli_connect, записывается в $_SESSION["db"] (такое вот решение). В любых других файлах подключаемых через require линк в $_SESSION["db"] живой. Если был вызов ajax - линк дохлый. При этом в том же вызове все остальные переменные в $_SESSION (массивы, строки и пр.) абсолютно нормальные. Вопрос: куда пропадает линк? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.05.2017, 02:16 |
|
PHP, сессии, БД, ajax
|
|||
---|---|---|---|
#18+
$_SESSION - это некий файл во временной папке файловой системы, внутри все хранится в виде строк (сериализация), результат функции serialize. А теперь скажите, как можно записать в виде строки "идентификатор соединение с базой", который представляет двоичный ресурс? В течение всего времени скрипта вы конечно можете туда записывать что угодно, и извлекать в том же виде, это же ведь переменная, и из любых других скриптов которые загружаются в текущем сеансе. Но после завершения текущего сеанса работы, PHP сериализирует весь этот массив ($_SESSION) и записывает на диск. При повторном обращении файл считывается и заполняет $_SESSION, при помощи unserialize и вы видите вновь эти переменные. В вашем случае, сайт/страница каждый раз делают соединение с базой вновь и просто пишут в $_SESSION новый идентификатор, для ajax нужно поступать точно так же - делать новое соединение и записывать в $_SESSION что бы не ломать работу уже того что есть. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.05.2017, 08:01 |
|
|
start [/forum/topic.php?fid=23&fpage=33&tid=1460658]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
46ms |
get topic data: |
15ms |
get forum data: |
3ms |
get page messages: |
46ms |
get tp. blocked users: |
2ms |
others: | 326ms |
total: | 471ms |
0 / 0 |