세션을 사용하는 한 가지 예는 브라우저가 닫힐 때 세션이 만료된다는 것입니다. 좀 더 지속적으로 데이터를 저장하려면 cookie 또는 localStorage를 사용하십시오.
<?php
/* Constants */
define('EXPIRATION_TIME', 30); // minutes
/* Dummy variables */
$productAdded = true;
/* Start session */
session_start();
/* Check timer */
if (isset($_SESSION['timer']) && $_SESSION['timer'] < time()) {
/*
30 min have gone by and the user has not added more products
to the cart, lets empty the cart and reset the timer
*/
unset($_SESSION['cart']);
unset($_SESSION['timer']);
}
/* Add product */
if ($productAdded) {
/* Increase timer */
$_SESSION['timer'] = (time() + (EXPIRATION_TIME * 60));
/* Add product to cart, and all other tasks */
if (!isset($_SESSION['cart']))
$_SESSION['cart'] = array();
$_SESSION['cart'][] = array(
'id' => 17,
'name' => 'Fancy shampoo',
'quantity' => 1337
);
}
?>
나는 제품을 수량으로 반환하기 위해 cron 작업을 사용하고 있습니다. 당신은 자바 스크립트를 사용하여 타이머를 사용하여 공개 할 백엔드에 대한 API 호출을 트리거 할 수 있습니다. 그러나 사용자가 broswer를 닫으면 API 호출이 실행되지 않습니다. 따라서 API를 호출하려면 크론 작업이나 작업 스케줄러로 폴백해야합니다. –
정확히 무엇을 의미합니까 * 웹 사이트의 모든 페이지에서 작동하는 타이머를 구현하는 방법 *? 장바구니가 열려있는 모든 고객이나 제품을 다시 사용할 수 있음을 모든 사람에게 알리는 기능을 제공합니까? 다른 질문에 관해서는 Kimberlee가 더 빠르며 이미 대답했습니다. 안전 장치는 일종의 스케줄러를 주기적으로 실행하고 "클린업"(리눅스의 경우 cron 또는 Windows의 경우 작업 스케줄러)을 시작하는 것입니다. –
@ ViliamAboši 내가 타이머가 모든 페이지에서 작동해야한다고 말했을 때 카트 페이지에 있지 않더라도 홈페이지 (카트 페이지가 아님) 타이머가 계속 감소하고 있음을 예를 들어 설명했습니다 – programmer