سؤال

إذا كنت ضرب صفحة المكالمات session_start().كم من الوقت يجب أن انتظر حتى إذا كنت لتحديث الصفحة لقد صدر جلسة جديدة ID ؟

هل كانت مفيدة؟

المحلول

تحقق من php.ini على القيمة المحددة للدورة.gc_maxlifetime هو معرف عمر في ثوان.

أعتقد الافتراضي هو 1440 ثانية (24 دقيقة)

http://www.php.net/manual/en/session.configuration.php

تحرير: بعض التعليقات أشير أعلاه ليست دقيقة تماما.رائع شرح السبب و كيفية تنفيذ الدورة أعمار متاحة هنا:

كيف تنتهي PHP الدورة بعد 30 دقيقة ؟

نصائح أخرى

والافتراضي في ملف php.ini من أجل التوجيه session.gc_maxlifetime (في "القيادة العامة" هو لجمع القمامة) هي 1440 ثانية أو 24 دقيقة. راجع صفحة الدورة وقت التشغيل Configuation في دليل:

http://www.php.net/manual/en/session. configuration.php

ويمكنك تغيير هذا الثابت في ملف php.ini أو .httpd.conf الملفات إذا كان لديك الوصول إليها، أو في ملف هتكس المحلي على موقع الويب الخاص بك. لتعيين المهلة لمدة ساعة واحدة باستخدام طريقة هتكس، إضافة هذا السطر إلى ملف .htaccess في الدليل الجذر للموقع:

php_value session.gc_maxlifetime "3600"

كن حذرا إذا كنت على استضافة مشتركة أو إذا كنت استضافة أكثر من موقع واحد حيث لم تقم بتغيير الافتراضي. الموقع جلسة الافتراضي هو الدليل / تمة، وسوف روتين جمع القمامة تشغيل كل 24 دقيقة لهذه المواقع الأخرى (وتمحو جلسات العمل الخاصة بك في هذه العملية، بغض النظر عن متى <م> يجب أن تبقى) . انظر ملاحظة على الصفحات اليدوية أو هذا الموقع للحصول على شرح أفضل.

والجواب على هذا هو لنقل جلسات العمل الخاصة بك إلى دليل آخر باستخدام session.save_path. هذا يساعد على منع الأشرار من اختطاف جلسات زوارك من الافتراضي / الدليل تمة.

ووفقا للمستخدم على PHP.net الموقع جهوده للحفاظ على جلسة فشل على قيد الحياة، حتى انه اضطر الى تقديم الحل.

<?php

$Lifetime = 3600;
$separator = (strstr(strtoupper(substr(PHP_OS, 0, 3)), "WIN")) ? "\\" : "/";

$DirectoryPath = dirname(__FILE__) . "{$separator}SessionData";
//in Wamp for Windows the result for $DirectoryPath
//would be C:\wamp\www\your_site\SessionData

is_dir($DirectoryPath) or mkdir($DirectoryPath, 0777);

if (ini_get("session.use_trans_sid") == true) {
    ini_set("url_rewriter.tags", "");
    ini_set("session.use_trans_sid", false);

}

ini_set("session.gc_maxlifetime", $Lifetime);
ini_set("session.gc_divisor", "1");
ini_set("session.gc_probability", "1");
ini_set("session.cookie_lifetime", "0");
ini_set("session.save_path", $DirectoryPath);
session_start();

?>

في مجلد SessionData سيتم تخزينها ملفات نصية لعقد جلسة المعلومات، فإن كل ملف يكون لها اسم يشبه "sess_a_big_hash_here".

وذلك يعتمد على إعدادات الخاص بي ...
استخدام phpinfo() ونلقي نظرة على الفصل الدورة. هناك قيم مثل session.gc_maxlifetime وsession.cache_expire وsession.cookie_lifetime مما يؤثر على حياة جلسات

وتحرير: انها مثل مارتن الكتابة قبل

ولكن احترس، على معظم XAMPP / ampp /...- الاجهزة وبعض destributions لينكس انها 0، مما يعني أن الملف لم تحصل على حذف حتى كنت تفعل ذلك في السيناريو الخاص بك (أو القذرة عبر قذيفة)

وPHP.INI:

; Lifetime in seconds of cookie or, if 0, until browser is restarted.
; http://php.net/session.cookie-lifetime
session.cookie_lifetime = 0

ويمكنك استخدام شيء من هذا القبيل ini_set('session.gc_maxlifetime', 28800); // 8 * 60 * 60 جدا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top