با درود خدمت شما
session.gc_maxlifetime رو توی php.ini تغییر دادم به 200هزار ثانیه اما هیچ تغییری نمیبینم و سر نیم ساعت سشن ها از مرورگر پاک میشن
چرا؟ مشکل کجاس؟
سلام و درود
این مورد رو به هاستینگ اعلام کردید ؟ معمولا این طور موارد یک بازه نرمالی در نظر گرفته میشه و باید از سرور هم بررسی بشه
خواهش می کنم.
پس این مورد رو به @arta جان ارجاع می دم تا موارد رو دقیق تر خدمتتون اعلام کنند
وقت بخیر
سرویس شما مبتنی بر CloudLinux است.
این یعنی جدا از مقدار php.ini می بایست همین مقدار رو در .user.ini هم قرار بدین. اصولی ترین روش اینه که هر فایلی که دستی ایجاد کردید رو حذف کنید، سپس از طریق PHPini Editor مقادیر رو اصلاح و ذخیره کنید (در حالت editor mode) تا هر دو فایل براتون ایجاد بشه.
در واقع بهترین روش برای session.gc_maxlifetime این هست که در برنامه نویسی پیاده سازی بشه. تنظیم این مقدار در .user.ini و php.ini صرفا به selector میگه مقدارش این قدر هست ولی سوال اینه که آیا کدی که در هاست ران می کنید همچنین دستوری رو میشناسه یا خیر. آیا در اون تعریف شده که از این مقدار پیروی کنه یا خیر.
توی user.ini هم همین مقدار 200000 خودکار ثبت شده
خوب الان شما باید فایل .htaccess
هم بررسی کنید. وقتی از طریق اون ابزار این کار رو انجام میدین تو چندین فایل این مقادیر رو ذخیره می کنه. جدا از php.ini
و .user.ini
تو .htaccess
هم این مقادیر رو تنظیم می کنه.
اول اینکه با تابع gc_maxlifetime
شما باید مقدار gc_cookie_lifetime
هم افزایش بدین. مقدار هر دو رو افزایش بدین. دوم اینکه فایل .htaccess رو بررسی کنید اگر مقدار cookie_lifetime داره، اون رو به مقدار 200000
تغییر بدین همچنین اگر رکورد duplicate (یعنی دوبار تکرار شده باشه) رو حذف کنید.
دقت داشته باشید که مقدار LSAPI
هم تو فایل .htaccess
مشاهده می کنید، اون رو حذف نکنید. استفاده از LSAPI
در کنار php7
می تونه عملکرد بهتری داشته باشه.
رکورد نهایی فایل .htaccess شما باید به یه چیزی مثل زیر باشه:
<IfModule php7_module>
php_flag display_errors Off
php_value max_execution_time 30
php_value max_input_time 60
php_value max_input_vars 1000
php_value memory_limit 128M
php_value post_max_size 100M
php_value session.gc_maxlifetime 200000
php_value session.save_path "/var/cpanel/php/sessions/ea-php72"
php_value upload_max_filesize 100M
php_flag zlib.output_compression Off
php_value session.cookie_lifetime 200000
php_value session.gc_maxlifetime 200000
</IfModule>
<IfModule lsapi_module>
php_flag display_errors Off
php_value max_execution_time 30
php_value max_input_time 60
php_value max_input_vars 1000
php_value memory_limit 128M
php_value post_max_size 100M
php_value session.gc_maxlifetime 200000
php_value session.save_path "/var/cpanel/php/sessions/ea-php72"
php_value upload_max_filesize 100M
php_flag zlib.output_compression Off
php_value session.cookie_lifetime 200000
php_value session.gc_maxlifetime 200000
</IfModule>
خطی که قرمز نشون میده، ea-php72
نسخه php هست، نسخه هرچی هست همون رو باید بزارید. مثلا اگر نسخه 7.3
هست باید بشه ea-php73
لطفا بررسی کنید و نتیجه رو اعلام کنید.
در خدمت شما هستیم.
آرتا جان سلام عزیز
شمایی نشناختم XD
حالت چطوره؟
امیدوارم همواره خوب باشی و سلامت و تندرست
همینطوریه که میگی یعنی سه تا فایل به نام های user.ini / php.ini / .htaccess توی دایرکتوری home هست و همینا توی دایرکتوری public_html هم تکرار شده. چک کردم htaccess رو همینطوریه که گذاشتی فقط اخرین مقدار ینی cookie_lifetime برابر با 9600 بود که اونم 200 تا کردم. الان گفتی دابلیکیت نباشه تو همین کد چهار تا maxlifetime هست و دوباره تکرار شده که
!?
الان توی هر دو دایرکتوری باید مقادیر رو تغییر بدم؟ چرا هم تو home ایجاد شده و هم توی public_html ?
سیو زدم ببینم اوکی میشه
خبر میدم
@arta داداش کار نکرد همونطوریه
این htaccess:
<IfModule php7_module>
php_flag display_errors Off
php_value max_execution_time 30
php_value max_input_time 60
php_value max_input_vars 1000
php_value memory_limit 128M
php_value post_max_size 100M
php_value session.gc_maxlifetime 200000
php_value session.save_path "/var/cpanel/php/sessions/ea-php72"
php_value upload_max_filesize 100M
php_flag zlib.output_compression Off
php_value session.cookie_lifetime 200000
</IfModule>
<IfModule lsapi_module>
php_flag display_errors Off
php_value max_execution_time 30
php_value max_input_time 60
php_value max_input_vars 1000
php_value memory_limit 128M
php_value post_max_size 100M
php_value session.gc_maxlifetime 200000
php_value session.save_path "/var/cpanel/php/sessions/ea-php72"
php_value upload_max_filesize 100M
php_flag zlib.output_compression Off
php_value session.cookie_lifetime 200000
</IfModule>
این php.ini:
display_errors = Off
max_execution_time = 30
max_input_time = 60
max_input_vars = 1000
memory_limit = 128M
post_max_size = 50M
session.gc_maxlifetime = 200000
session.save_path = "/var/cpanel/php/sessions/ea-php72"
upload_max_filesize = 50M
zlib.output_compression = Off
این هم user.ini:
display_errors = Off
max_execution_time = 30
max_input_time = 60
max_input_vars = 1000
memory_limit = 128M
post_max_size = 50M
session.gc_maxlifetime = 200000
session.save_path = "/var/cpanel/php/sessions/ea-php72"
upload_max_filesize = 50M
zlib.output_compression = Off
البته هم توی دایرکتوری home و هم توی public_html
کار نکرد به این خاطر که بخشی از کدی که براتون ارسال کردم رو حذف کردید.
مقدار php_value session.gc_maxlifetime 200000
رو تو htaccess حذف کردید. براتون اضافه کردم به فایل .htaccess
cookie_lifetime و gc_maxlifetime در واقع dependent هستن.
به این خاطر که اگر زمانی addon یا sub دامنه قبل از public_html ایجاد کردید، این مقادیر برای اونها هم effective باشه.
duplicate یعنی تو یه فایل مقداری دوبار تکرار شده باشه. اگر تکرار شده باشه، فقط باید یکی رو نگه دارید.
درسته.
الان مقدار تو phpinfo برای هر دو مورد 200000
نشون میده. این یعنی مقدار به درستی ست شد. پس مشکل چیه؟
الان میزان مقادیری که در اون باره تاپیک باز کردید، به مقداری که نیاز داشتید تغییر کرده. باید اتفاق دیگه ای بیفته؟
اعمال نمیشه خب سر نیم ساعت لوگ آت میکنه سشن هارو
خوب برای اون یه تاپیک دیگه باز کنید. این مقدار مطابق با phpinfo اعمال شده. اگر کار نمی کنه. یعنی برنامه نویسی شما مشکل داره.
من پیش تر تو همین تاپیک اعلام کردم که تنظیم این مقدار تو این فایل ها هیچ فایده ای نداره، چون اگه تو برنامه نویسی به درستی پیاده سازی شده باشه، نیازی به کد اضافه کردن نیست.
آرتا شما که دسترسی داری اونور میشه یه نگاهی بندازید به فایلهام مخصوصا session
احتمال میدم روشم اشتباه بشه
ولی خب 4 روزه میخوام بدونم چی اشتباهه که نمیشه اخه چرا درست انجام میده سر نیم ساعت میبنده
متاسفانه این موارد بخشی از تعهدات ما نیست، در حد آموزشی در همین انجمن اگر تاپیک باز کنید در خدمتتون هستیم. شاید @Hosein بتونه به صورت فریلسنری مشکل رو براتون بررسی کنه.
این صفحه سشن:
<?php
session_start();
include('config.php');
$user_check = $_SESSION['login_user'];
$ses_sql = mysqli_query($db ,"select user_flname,user_username,user_id,user_mobile,user_password from users_TBL where user_username = '$user_check' ");
$row = mysqli_fetch_array($ses_sql,MYSQLI_ASSOC);
$login_session = $row['user_flname'];
if(!isset($_SESSION['login_user'])){
header("location: /index.php");
}
?>
این کانفیگ:
<?php
session_start();
define('DB_SERVER', 'localhost');
define('DB_USERNAME', '7host');
define('DB_PASSWORD', '7host');
define('DB_DATABASE', '7host');
$db = mysqli_connect(DB_SERVER,DB_USERNAME,DB_PASSWORD,DB_DATABASE) or die('Cannot connect to the database because: ' . mysqli_error($db));
mysqli_query($db,'set names "utf8"');
//error_reporting(E_ALL);
//ini_set('display_errors','On');
////$timeout = 816400; // 3600 seconds = 60 minutes = 1 hour
//ini_set('session.gc_maxlifetime', $timeout);
?>
من بررسی کردم چه تو فایل سشنم چه جاهای دیگه هیچ حرفی از زمان نیاوردم، اگه کدها اشتباس این نیم ساعت هم نباید فعال بمونه که
@arta
سلام آرتا
ببین من جهت تست یه فایل درست کردم بنام s1.php و یه فایل هم s2.php به ترتیب:
s1.php
session_start();
$_SESSION['session_alive'] = 'Alive';
و s2.php
session_start();
echo $_SESSION['session_alive'];
فقط نیم ساعت تو صفحه s2.php زنده بود و بعد پایان یافت. من که رو 200هزار تنظیم کردم
من کلی افراد کشوندم اوردم اینجا براشون هاست گرفتم از اینجا بخاطر پشتیبانی قوی و مشتری مداریتون، اینو مطمئنم مشکل یجایی همین فایل های ini هست که اعمال نمیشه چون اینجا که کد خاصی نخورده، اینو یکاریش کن لطفا دو هفته درگیر همینم
مرسی