Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Продление жизни сессии при добавлении товара в корзину


Grarnik

Recommended Posts

Здравствуйте! Есть нужда в продлении жизни сессии при добавлении товара в корзину.

 

То есть сейчас при добавлении товара в корзину, позиция может исчезнуть через определенно заданное время.

 

Нужно, чтобы товар находился в корзине дольше (от недели до месяца)

 

Изменение значений session.gc_maxlifetime ни к чему не привело. Также увеличивал время в файле system/library/session.php

 

Сайт находится на VPS

Надіслати
Поділитися на інших сайтах


Насколько я осведомлён, если пользователь авторизован, то товары в корзине остаются на продолжительное время. Каким способом эта функция работает?

Надіслати
Поділитися на інших сайтах


какое это время и кем оно задано?

еще phpinfo() посмотрите как просто php и в окружении движка.

 

Примерно через час сессия сбрасывается. Вот и мне интересно, кем может быть задано это время

 

Хранение сессии и в php и в окружении движка одинаковые.

Надіслати
Поділитися на інших сайтах


Нашел интересную строчку в system/library/cart.php 

 

// Remove all the expired carts with no customer ID
$this->db->query("DELETE FROM " . DB_PREFIX . "cart WHERE customer_id = '0' AND date_added < DATE_SUB(NOW(), INTERVAL 1 HOUR)");

Змінено користувачем Grarnik
Надіслати
Поділитися на інших сайтах


Заменил эту строчку на:

 

// Remove all the expired carts with no customer ID
$this->db->query("DELETE FROM " . DB_PREFIX . "cart WHERE customer_id = '0' AND date_added < DATE_SUB(NOW(), INTERVAL 1 MONTH)");
 
Через час напишу о результатах
Надіслати
Поділитися на інших сайтах


Проблема решена.

 

Открываем файл: system/library/cart.php и ищем в нём строчку 

 

 

$this->db->query("DELETE FROM " . DB_PREFIX . "cart WHERE customer_id = '0' AND date_added < DATE_SUB(NOW(), INTERVAL 1 HOUR)");

 

Далее заменяем эту строчку на:

 

 

 

$this->db->query("DELETE FROM " . DB_PREFIX . "cart WHERE customer_id = '0' AND date_added < DATE_SUB(NOW(), INTERVAL 1 MONTH)");

 

Тем самым мы увеличим жизнь товара в корзине с 1 часа до 1 месяца.

  • +1 1
Надіслати
Поділитися на інших сайтах


как тоже самое сделать в 1.5 подскажите кто-нибудь. в указанном файле нет такой или подобной строки, help!!!

 

мне казалось что это в 2.3 появилось только. теперь да, хаоса стало еще больше.

Надіслати
Поділитися на інших сайтах


Изменение значений session.gc_maxlifetime ни к чему не привело. Также увеличивал время в файле system/library/session.php

 

 

мне вот эти два значения поменять? тоже хочу чтобы месяц хранилось!

Надіслати
Поділитися на інших сайтах


В 1.5 полагаю что нужно изменить значения в php.ini

session.gc_maxlifetime

 

на более долгое.

 

Далее в system/library/session.php изменить значение 

session_set_cookie_params(0, '/'); 

 

Вместо 0 поставить своё время.

Надіслати
Поділитися на інших сайтах


Народ, привет.

Столкнулся с такой же проблемой. Товары из корзины пропадают в течении часа или около того. Всё что тут написано вроде сделал, но проблема не ушла, может кто-то знающи подскажет куда смотреть. opencart 1.5.5.1.2. Может я что то не так написал вот php.ini:

magic_quotes_gpc = Off;
register_globals = Off;
default_charset = UTF-8;
memory_limit = 512M;
max_execution_time = 18000;
upload_max_filesize = 999M;
safe_mode = Off;
mysql.connect_timeout = 20;
session.use_cookies = On;
session.use_trans_sid = Off;
session.gc_maxlifetime = 86400;
allow_url_fopen = on;
session.cookie_lifetime =86400;
max_input_time = 60;
 
А вот session.php:
<?php
class Session {
public $data = array();
 
  public function __construct() {
if (!session_id()) {
ini_set('session.use_cookies', 'On');
ini_set('session.use_trans_sid', 'Off');
session_set_cookie_params(86400, '/');
 
session_start();
}
 
$this->data =& $_SESSION;
}
 
function getId() {
return session_id();
}
}
?>
 
Помогите пожалуйста.
Заранее спасибо
Надіслати
Поділитися на інших сайтах


  • 2 weeks later...

и тебе спасибо за "помощь". У меня вот тоже не заработало..

Спасибо, что надоумили. Действительно не стоит быть как те, кто тебе не нравится (все те, кому спасибо за помощь). Решение (для своего случая) нашел и надо поделиться им.

Итак дабы корзина жила столько сколько вам нужно надо сделать так:

В файле .htaccess

php_value session.gc_maxlifetime 172800 - время жизни в секундах (по умолчанию у моего хостера 24 мин стоит, стока корзина и жила)
php_value session.cookie_lifetime 172800  - время жизни в секундах (по умолчанию у моего хостера 24 мин стоит, стока корзина и жила)
php_value session.save_path "папка_сохранения_файлов_сессий" для моего хостера выглядит так "home/u42_____/_____.ru/www/Sessions"
и в файле php.ini вставляем 
session.save_path = "home/u42_____/_____.ru/www/Sessions" - это для сборщика мусора. Если этот параметр отличается от php_value session.save_path, то сборщик мусора не будет заходить убираться и файлы сессий даже просроченные будут продолжать лежать на в папке. За неделю при моем траффике накопилось порядка 30000 файлов.
Еще раз спасибо за то, что надоумили =) 
Всем добра и успехов
  • +1 1
Надіслати
Поділитися на інших сайтах


  • 1 year later...

Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз

×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.