انجمن سون هاست

عدم اعمال زمان session.gc_maxlifetime

با درود خدمت شما
session.gc_maxlifetime رو توی php.ini تغییر دادم به 200هزار ثانیه اما هیچ تغییری نمیبینم و سر نیم ساعت سشن ها از مرورگر پاک میشن
چرا؟ مشکل کجاس؟

سلام و درود

این مورد رو به هاستینگ اعلام کردید ؟ معمولا این طور موارد یک بازه نرمالی در نظر گرفته میشه و باید از سرور هم بررسی بشه

1 Likes

سپاس از همراهی شما @webmaster
بله اعلام کردم گفتن که تو انجمن مطرح کن تا راهنماییت کنن

خواهش می کنم.

پس این مورد رو به @arta جان ارجاع می دم تا موارد رو دقیق تر خدمتتون اعلام کنند

2 Likes

وقت بخیر

سرویس شما مبتنی بر CloudLinux است.

این یعنی جدا از مقدار php.ini می بایست همین مقدار رو در .user.ini هم قرار بدین. اصولی ترین روش اینه که هر فایلی که دستی ایجاد کردید رو حذف کنید، سپس از طریق PHPini Editor مقادیر رو اصلاح و ذخیره کنید (در حالت editor mode) تا هر دو فایل براتون ایجاد بشه.

در واقع بهترین روش برای session.gc_maxlifetime این هست که در برنامه نویسی پیاده سازی بشه. تنظیم این مقدار در .user.ini و php.ini صرفا به selector میگه مقدارش این قدر هست ولی سوال اینه که آیا کدی که در هاست ران می کنید همچنین دستوری رو میشناسه یا خیر. آیا در اون تعریف شده که از این مقدار پیروی کنه یا خیر.

3 Likes

توی 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

لطفا بررسی کنید و نتیجه رو اعلام کنید.

در خدمت شما هستیم.

4 Likes

آرتا جان سلام عزیز
شمایی نشناختم 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 نشون میده. این یعنی مقدار به درستی ست شد. پس مشکل چیه؟

1 Likes

نمیدونم من خودم گیج شدم
چیکار کنیم بنظرت

الان میزان مقادیری که در اون باره تاپیک باز کردید، به مقداری که نیاز داشتید تغییر کرده. باید اتفاق دیگه ای بیفته؟

اعمال نمیشه خب سر نیم ساعت لوگ آت میکنه سشن هارو

1 Likes

خوب برای اون یه تاپیک دیگه باز کنید. این مقدار مطابق با phpinfo اعمال شده. اگر کار نمی کنه. یعنی برنامه نویسی شما مشکل داره.

من پیش تر تو همین تاپیک اعلام کردم که تنظیم این مقدار تو این فایل ها هیچ فایده ای نداره، چون اگه تو برنامه نویسی به درستی پیاده سازی شده باشه، نیازی به کد اضافه کردن نیست.

1 Likes

آرتا شما که دسترسی داری اونور میشه یه نگاهی بندازید به فایلهام مخصوصا session
احتمال میدم روشم اشتباه بشه
ولی خب 4 روزه میخوام بدونم چی اشتباهه که نمیشه اخه چرا درست انجام میده سر نیم ساعت میبنده
:confused:

متاسفانه این موارد بخشی از تعهدات ما نیست، در حد آموزشی در همین انجمن اگر تاپیک باز کنید در خدمتتون هستیم. شاید @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 هست که اعمال نمیشه چون اینجا که کد خاصی نخورده، اینو یکاریش کن لطفا دو هفته درگیر همینم

مرسی