Closed cvetanet closed 7 years ago
@cvetanet, спасибо! За очистку сессий отвественнен скрипт https://github.com/avin/gw-sms-captive/blob/master/app/Console/Kernel.php который выполняется каждую минуту при условии, что вы добавили в cron строчку
* * * * * php /var/www/apps/gw-sms-captive/artisan schedule:run >> /dev/null 2>&1
(подробно тут https://laravel.com/docs/5.4/scheduling)
В нем происходит следующее:
https://github.com/avin/gw-sms-captive/blob/master/app/Console/Commands/CleanInternetSessions.php#L83 Тут программа определяет просроченные сессии (ссылается на https://github.com/avin/gw-sms-captive/blob/master/app/Repositories/InternetSession/EloquentInternetSessionRepository.php#L71) После чего закрывает её (меняет статус в БД и выполняет манипуляции с iptables)
Если этого не происходит - возможно по крону у вас не выполняется указанный скрипт. Попробуйте выполнить его вручную из директории с программой прописав в консоли
php artisan jobs:cleanInternetSessions
Само время сессии определяется в файле .env
в корне приложения через переменную SESSION_TIME_IN_MINUTES
.
Да кстати, про файл .env
я забыл указать в документации - что для начала необходимо переименовать текущий файл .env.example
в .env
(которого по умолчанию нет, но он необходим). Скорее всего из за него у вас не отрабатывают скрипты.
Спасибо с переменными все понял! вот что получаеться..
/var/www/apps/gw-sms-captive$ sudo php artisan jobs:cleanInternetSessions
PHP Fatal error: Uncaught ReflectionException: Class log does not exist in /var/www/apps/gw-sms-captive/bootstrap/cache/compiled.php:1285
Stack trace:
#0 /var/www/apps/gw-sms-captive/bootstrap/cache/compiled.php(1285): ReflectionClass->__construct('log')
#1 /var/www/apps/gw-sms-captive/bootstrap/cache/compiled.php(1236): Illuminate\Container\Container->build('log', Array)
#2 /var/www/apps/gw-sms-captive/bootstrap/cache/compiled.php(1774): Illuminate\Container\Container->make('log', Array)
#3 /var/www/apps/gw-sms-captive/bootstrap/cache/compiled.php(1328): Illuminate\Foundation\Application->make('log')
#4 /var/www/apps/gw-sms-captive/bootstrap/cache/compiled.php(1312): Illuminate\Container\Container->resolveClass(Object(ReflectionParameter))
#5 /var/www/apps/gw-sms-captive/bootstrap/cache/compiled.php(1298): Illuminate\Container\Container->getDependencies(Array, Array)
#6 /var/www/apps/gw-sms-captive/bootstrap/cache/compiled.php(1236): Illuminate\Container\Container->build('App\\Exceptions\\...', Array)
#7 /var/www/apps/gw-sms in /var/www/apps/gw-sms-captive/bootstrap/cache/compiled.php on line 1285
c .env все нормально он создался..
очень похожу на данную проблему https://laracasts.com/discuss/channels/general-discussion/class-log-does-not-exist?page=1
похоже... но не могли бы подсказать поконкретнее..
Попробуйте для начала загнать все переменные в файле .env в ковычки (особенно если есть пробелы). По типу
VAR="value"
и проверьте что у вас установлены и включены следующие расширения для PHP
APP_ENV="local" APP_DEBUG="true" APP_KEY="jq****RY"
SMS_RU_KEY="25B*3606" REDIRECT_SUCCESS="http://**ow.ru" SESSION_TIME_IN_MINUTES="15"
DB_HOST="localhost" DB_DATABASE="smscaptive" DB_USERNAME="root" DB_PASSWORD="****"
CACHE_DRIVER="file" SESSION_DRIVER="file" QUEUE_DRIVER="sync"
MAIL_DRIVER="smtp" MAIL_HOST="smtp.mail.ru" MAIL_PORT="2525" MAIL_USERNAME="null" MAIL_PASSWORD="null" MAIL_ENCRYPTION="null"
расширения все включены... не помогает..
хм, трудно сказать в чем конкретно проблема. Перепробуйте все предложенные варианты https://stackoverflow.com/questions/34978828/uncaught-reflectionexception-class-log-does-not-exist-laravel-5-2
Если проблему всё же решить не удасться - напишите какой дистрибьютив вы используете, какую версию PHP и выложите, что вам выдает php -m
. Попробую воссоздать у себя
Ubuntu 14.04.5 LTS (GNU/Linux 4.4.0-31-generic x86_64) [PHP Modules] calendar Core ctype date dom exif fileinfo filter ftp gettext hash iconv json libxml openssl pcntl pcre PDO Phar posix readline Reflection session shmop SimpleXML sockets SPL standard sysvmsg sysvsem sysvshm tokenizer wddx xml xmlreader xmlwriter xsl Zend OPcache zlib
[Zend Modules] Zend OPcache
ставил все по инструкции .env я Вам скинул. Единственное отличие я ставил php вот так sudo add-apt-repository ppa:ondrej/php sudo apt-get update sudo apt-get install python-software-properties conntrack php5 php5-curl php5-json php5-fpm php5-mysql php5-mcrypt php5-cli git conntrack nginx mysql-server isc-dhcp-server iptables-persistent
хм, на вскидку вижу, что в списке модулей отсуствуют
tokenizer
mbstring
mysql
Ок, я попробую тогда у себя всё это дело настроить, как вы написали. Посмотрю, что получиться. Смогу это сделать только вечером.
Спасибо! действительно дело было в модулях
tokenizer
mbstring
mysql
сейчас сессия трется в iptables и в бд переходит в статус active 0! (я так понимаю значет все хорошо) но появился еще вопрос! если пользователь отвалился через 15 минут, а еще через 5 снова пытается зайти, ему заново надо делать запрос по смс? (из базы он уже не подцепится?)
угу, нужно по новой код запрашивать. Если хотите чтоб код полученный по СМС не имел срока годности - уберите в коде это условие https://github.com/avin/gw-sms-captive/blob/master/app/Repositories/Key/EloquentKeyRepository.php#L45-L47
или можете выставить отдельный срок годности для СМС кода
https://github.com/avin/gw-sms-captive/blob/12059f14cc309ecfdd9189724058130c0c1423d2/app/Repositories/InternetSession/EloquentInternetSessionRepository.php#L61
вместо SESSION_TIME_IN_MINUTES
придумайте новую переменную или добавьте её в .env
с необходимым значением
Спасибо Вам огромное! тему можно удалять)) Удачи Вам!
Сразу хочу выразить огромную благодарность за Ваш труд и старание. Подскажите пожалуйста как происходит очистка клиентов? через какой промежуток времени? и как это можно проконтролировать... Например есть пользователь он уже 5 дней не выходил в сеть. как понять в каком он состоянии если в бд стоит статус active 1?