Использование timestamp ...
<?php
if (!isset($_SESSION)) {
$session = session_start();
}
if ($session && !isset($_SESSION['login_time'])) {
if ($session == 1) {
$_SESSION['login_time']=time();
echo "Login :".$_SESSION['login_time'];
echo "<br>";
$_SESSION['idle_time']=$_SESSION['login_time']+20;
echo "Session Idle :".$_SESSION['idle_time'];
echo "<br>";
} else{
$_SESSION['login_time']="";
}
} else {
if (time()>$_SESSION['idle_time']){
echo "Session Idle :".$_SESSION['idle_time'];
echo "<br>";
echo "Current :".time();
echo "<br>";
echo "Session Time Out";
session_destroy();
session_unset();
} else {
echo "Logged In<br>";
}
}
?>
Я использовал 20 секунд для истечения сеанса с использованием метки времени.
Если вам нужно 30 минут добавить 1800 (30 минут в секундах) ...
Я надеюсь, что это поможет вам
public function importCsv()
{
$file = public_path('upload/test.csv');
$customerArr = $this->csvToArray($file);
for ($i = 0; $i < count($customerArr); $i ++)
{
// $customerArr[$i];
//get data and insert or you ca use
}
print_r($customerArr);
}
function csvToArray($filename = '', $delimiter = ',')
{
if (!file_exists($filename) || !is_readable($filename))
return false;
$header = null;
$data = array();
if (($handle = fopen($filename, 'r')) !== false)
{
while (($row = fgetcsv($handle, 1000, $delimiter)) !== false)
{
if (!$header)
$header = $row;
else
$data[] = array_combine($header, $row);
}
fclose($handle);
}
return $data;
}
. <?php
$csv = array_map('str_getcsv', file('filename.csv'));
for ($j = 1; $j < count($csv); $j++) {
for ($i = 0; $i < count($csv[0]); $i++) {
$myArray[$csv[0][$i].$j] = $csv[$j][$i];
}
}
print_r($myArray);
Не самое элегантное решение, но оно подойдет вам. Я использовал петли for
, чтобы мне было проще использовать их счетчики. Выходной результат:
Array
(
[firstName1] => test1
[lastName1] => Test1
[email1] => test1@gmail.com
[firstName2] => test2
[lastName2] => Test2
[email2] => test2@gmail.com
)
И мой CSV-файл выглядел так:
firstName,lastName,email
test1,Test1,test1@gmail.com
test2,Test2,test2@gmail.com
Первый цикл запускает счетчик с позиции 1, поэтому я избегаю заголовков и буду зацикливаться основной массив CSV.
Вложенный цикл будет проходить через каждый из вложенных массивов и на основе 1-го, который содержит информацию заголовка, объединит новые ключевые поля и создаст ваш новый массив.
Если вы хотите, чтобы оно было в точности , как в вашем примере, с квадратными скобками и счетчиком, начинающимся с 0 для ключевого поля, то вы можете просто: выведет для вас массив, как вы и просили в своем вопросе:
Array
(
[firstName[0]] => test1
[lastName[0]] => Test1
[email[0]] => test1@gmail.com
[firstName[1]] => test2
[lastName[1]] => Test2
[email[1]] => test2@gmail.com
)