Merge pull request #7662 from annando/session-memory
Fix session size problems
This commit is contained in:
commit
3ac6961da5
4 changed files with 14 additions and 11 deletions
10
boot.php
10
boot.php
|
@ -413,7 +413,7 @@ function public_contact()
|
||||||
*
|
*
|
||||||
* @return int|bool visitor_id or false
|
* @return int|bool visitor_id or false
|
||||||
*/
|
*/
|
||||||
function remote_user($uid = 0)
|
function remote_user($uid = null)
|
||||||
{
|
{
|
||||||
// You cannot be both local and remote.
|
// You cannot be both local and remote.
|
||||||
// Unncommented by rabuzarus because remote authentication to local
|
// Unncommented by rabuzarus because remote authentication to local
|
||||||
|
@ -426,15 +426,15 @@ function remote_user($uid = 0)
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!empty($uid) && !empty($_SESSION['remote'])) {
|
if (!is_null($uid) && !empty($_SESSION['remote'])) {
|
||||||
|
/// @todo replace it with this:
|
||||||
|
// if (!empty($_SESSION['remote'][$uid])) ...
|
||||||
foreach ($_SESSION['remote'] as $visitor) {
|
foreach ($_SESSION['remote'] as $visitor) {
|
||||||
if ($visitor['uid'] == $uid) {
|
if ($visitor['uid'] == $uid) {
|
||||||
return $visitor['cid'];
|
return $visitor['cid'];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
} elseif (is_null($uid) && !empty($_SESSION['visitor_id'])) {
|
||||||
|
|
||||||
if (!empty($_SESSION['visitor_id'])) {
|
|
||||||
return intval($_SESSION['visitor_id']);
|
return intval($_SESSION['visitor_id']);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -114,7 +114,7 @@ function dfrn_poll_init(App $a)
|
||||||
$_SESSION['remote'] = [];
|
$_SESSION['remote'] = [];
|
||||||
}
|
}
|
||||||
|
|
||||||
$_SESSION['remote'][] = ['cid' => $r[0]['id'], 'uid' => $r[0]['uid'], 'url' => $r[0]['url']];
|
$_SESSION['remote'][$r[0]['uid']] = ['cid' => $r[0]['id'], 'uid' => $r[0]['uid']];
|
||||||
|
|
||||||
$_SESSION['visitor_id'] = $r[0]['id'];
|
$_SESSION['visitor_id'] = $r[0]['id'];
|
||||||
$_SESSION['visitor_home'] = $r[0]['url'];
|
$_SESSION['visitor_home'] = $r[0]['url'];
|
||||||
|
@ -521,7 +521,7 @@ function dfrn_poll_content(App $a)
|
||||||
$_SESSION['remote'] = [];
|
$_SESSION['remote'] = [];
|
||||||
}
|
}
|
||||||
|
|
||||||
$_SESSION['remote'][] = ['cid' => $r[0]['id'], 'uid' => $r[0]['uid'], 'url' => $r[0]['url']];
|
$_SESSION['remote'][$r[0]['uid']] = ['cid' => $r[0]['id'], 'uid' => $r[0]['uid']];
|
||||||
$_SESSION['visitor_id'] = $r[0]['id'];
|
$_SESSION['visitor_id'] = $r[0]['id'];
|
||||||
$_SESSION['visitor_home'] = $r[0]['url'];
|
$_SESSION['visitor_home'] = $r[0]['url'];
|
||||||
$_SESSION['visitor_visiting'] = $r[0]['uid'];
|
$_SESSION['visitor_visiting'] = $r[0]['uid'];
|
||||||
|
|
|
@ -120,15 +120,18 @@ class Session
|
||||||
'my_url' => $a->getBaseURL() . '/profile/' . $user_record['nickname'],
|
'my_url' => $a->getBaseURL() . '/profile/' . $user_record['nickname'],
|
||||||
'my_address' => $user_record['nickname'] . '@' . substr($a->getBaseURL(), strpos($a->getBaseURL(), '://') + 3),
|
'my_address' => $user_record['nickname'] . '@' . substr($a->getBaseURL(), strpos($a->getBaseURL(), '://') + 3),
|
||||||
'addr' => defaults($_SERVER, 'REMOTE_ADDR', '0.0.0.0'),
|
'addr' => defaults($_SERVER, 'REMOTE_ADDR', '0.0.0.0'),
|
||||||
|
'remote' => []
|
||||||
]);
|
]);
|
||||||
|
|
||||||
$remote_contacts = DBA::select('contact', ['id', 'uid'], ['nurl' => Strings::normaliseLink($_SESSION['my_url']), 'rel' => [Contact::FOLLOWER, Contact::FRIEND]]);
|
$remote_contacts = DBA::select('contact', ['id', 'uid'], ['nurl' => Strings::normaliseLink($_SESSION['my_url']), 'rel' => [Contact::FOLLOWER, Contact::FRIEND], 'self' => false]);
|
||||||
while ($contact = DBA::fetch($remote_contacts)) {
|
while ($contact = DBA::fetch($remote_contacts)) {
|
||||||
if (($contact['uid'] == 0) || Contact::isBlockedByUser($contact['id'], $contact['uid'])) {
|
if (($contact['uid'] == 0) || Contact::isBlockedByUser($contact['id'], $contact['uid'])) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
$_SESSION['remote'][] = ['cid' => $contact['id'], 'uid' => $contact['uid'], 'url' => $_SESSION['my_url']];
|
/// @todo Change it to this format to save space
|
||||||
|
// $_SESSION['remote'][$contact['uid']] = $contact['id'];
|
||||||
|
$_SESSION['remote'][$contact['uid']] = ['cid' => $contact['id'], 'uid' => $contact['uid']];
|
||||||
}
|
}
|
||||||
DBA::close($remote_contacts);
|
DBA::close($remote_contacts);
|
||||||
|
|
||||||
|
|
|
@ -1124,13 +1124,13 @@ class Profile
|
||||||
/// @todo replace this and the query for this variable with some cleaner functionality
|
/// @todo replace this and the query for this variable with some cleaner functionality
|
||||||
$_SESSION['remote'] = [];
|
$_SESSION['remote'] = [];
|
||||||
|
|
||||||
$remote_contacts = DBA::select('contact', ['id', 'uid'], ['nurl' => $visitor['nurl'], 'rel' => [Contact::FOLLOWER, Contact::FRIEND]]);
|
$remote_contacts = DBA::select('contact', ['id', 'uid'], ['nurl' => $visitor['nurl'], 'rel' => [Contact::FOLLOWER, Contact::FRIEND], 'self' => false]);
|
||||||
while ($contact = DBA::fetch($remote_contacts)) {
|
while ($contact = DBA::fetch($remote_contacts)) {
|
||||||
if (($contact['uid'] == 0) || Contact::isBlockedByUser($visitor['id'], $contact['uid'])) {
|
if (($contact['uid'] == 0) || Contact::isBlockedByUser($visitor['id'], $contact['uid'])) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
$_SESSION['remote'][] = ['cid' => $contact['id'], 'uid' => $contact['uid'], 'url' => $visitor['url']];
|
$_SESSION['remote'][$contact['uid']] = ['cid' => $contact['id'], 'uid' => $contact['uid']];
|
||||||
}
|
}
|
||||||
|
|
||||||
$a->contact = $visitor;
|
$a->contact = $visitor;
|
||||||
|
|
Loading…
Reference in a new issue