Есть ли способ запретить сеансовому классу устанавливать cookie и добавлять запись в базу данных при вызове из командной строки?
Самый простой способ, по моему мнению, состоит в том, чтобы расширить класс Session следующим образом:
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); class MY_Session extends CI_Session { public function __construct() { $CI = get_instance(); if ($CI->input->is_cli_request()) { return; } parent::__construct(); } }
Просто поместите его в папку application/libraries
. И с контроллером вроде этого:
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); class Welcome extends CI_Controller { public function no_cli_session() { $this->load->library('session'); $this->session->set_userdata('logged', 'yes'); } }
Когда вы вызываете функцию из своего браузера, сеанс устанавливается, и когда вы вызываете его из cli, это не так.