Welcome Guest, Not a member yet? Register   Sign In
Session files
#1
Big Grin 

Hi All,

I recently saw that I had a lot of session files and wonder if the amount being created by CodeIgniter is correct. So I installed a fresh version of 4.5.5 app starter and made the following changes:-

Controller - home.php

PHP Code:
class Home extends BaseController
{
  public function index(): string
  
{
    $session service('session');
    return view('welcome_message');
  }


View - welcome_message.php

PHP Code:
<!DOCTYPE html>
<
html lang="en">
<
head>
    <meta charset="UTF-8">
    <title>Welcome to CodeIgniter 4!</title>
    <meta http-equiv="refresh" content="60"

CodeIgniter is creating a new session file every 5 minutes. I assume this is because of
Code:
public int $timeToUpdate = 300;
in Config/Session.php

Is this (many files) the expected behaviour? and if so does it make
Code:
$expiration = 7200;
redundant?

ELI5  Angel

[Image: IknZNroT]
Reply
#2

(This post was last modified: 11-18-2024, 11:33 PM by InsiteFX.)

Here are 2 helper method's that I wrote to clear out session and log files in the writable folder.
Do not use on a live sever, for a live server please use a corn job to delete them.

PHP Code:
/**
 *  clearSessionFiles ()
 * -----------------------------------------------------------------------
 */
if ( ! function_exists('clearSessionFiles'))
{
 
/**
 * clearSessionFiles ()
 * -------------------------------------------------------------------
 *
 */
 
function clearSessionFiles(): void
 
{
 
// Counter for number of session files - dir . & .. and index.html
 
$count 0;

 
// Get all files in our session folder
 
$listFile scandir("../writable/session/");
 foreach (
$listFile as $file) {
 
// if the file is a . or .. directory skip it!
 
if ( ! is_dir("../writable/session/" $file)) {
 
$count++;
 }

 
// We now have all session files and will exclude the index.html file
 
if (! is_dir("../writable/session/" $file)) {
 if (
$file !== "index.html") {
 
// for debugging count of files
 //echo $count . " " . $file . "<br>";

 // unlink and delete the files
 
unlink("../writable/session/" $file);
 }
 }
 }

 
// Close the session, it will re-intialize itself.
 
session()->close();

 
// Log message
 
log_message('debug'"clearSessionFiles() - Deleted " $count " Session files");
 }
}

/**
 *  clearLogFiles ()
 * -----------------------------------------------------------------------
 */
if ( ! function_exists('clearLogFiles'))
{
 
/**
 * clearLogFiles ()
 * -------------------------------------------------------------------
 *
 */
 
function clearLogFiles(): void
 
{
 
// Counter for number of log files - dir . & .. and index.html
 
$count 0;

 
// Get all files in our logs folder
 
$listFile scandir("../writable/logs/");
 foreach (
$listFile as $file) {
 
// if the file is a . or .. directory skip it!
 
if ( ! is_dir("../writable/logs/" $file)) {
 
$count++;
 }

 
// We now have all log files and will exclude the index.html file
 
if (!is_dir("../writable/logs/" $file)) {
 if (
$file !== "index.html") {
 
// for debugging count of files
 //echo $count . " " . $file . "<br>";

 // unlink and delete the log files
 
unlink("../writable/logs/" $file);
 }
 }
 }

 
// Log message
 
log_message('debug'"clearLogFiles() - Deleted " $count " Log files");
 }

What did you Try? What did you Get? What did you Expect?

Joined CodeIgniter Community 2009.  ( Skype: insitfx )
Reply
#3

Hi InsiteFX,

Thanks for the code. I've also updated this line in app/Config/Session.php

Code:
public bool $regenerateDestroy = true;
Reply
#4

Here is the info that I found on it.

cleanup php session files
What did you Try? What did you Get? What did you Expect?

Joined CodeIgniter Community 2009.  ( Skype: insitfx )
Reply




Theme © iAndrew 2016 - Forum software by © MyBB