2017-04-10 7 views
0

장바구니 만료 방법에 대한 도움말이 필요합니다
전자 상거래 웹 사이트에 장바구니가 있고 사용자가 장바구니에 제품을 추가한다고 가정하면 문제는 인벤토리에서 사용자가 보유하고 있기 때문에 해당 제품의 수량을 감소시켜야합니다.
타이머가 만료 될 때 장바구니에 타이머를 구현한다는 아이디어가 사용자에게 더 이상 제공되지 않습니다.제한된 시간 후에 장바구니를 만료하는 방법

내 질문은 :


  • 어떻게 타이머가 완료되면 재고를 업데이트하는 이벤트를 트리거하는 방법 웹 사이트의 모든 페이지에 걸쳐
  • 를 작동 타이머를 구현합니다.

희망 사항은 분명합니다. 감사합니다.

+0

나는 제품을 수량으로 반환하기 위해 cron 작업을 사용하고 있습니다. 당신은 자바 스크립트를 사용하여 타이머를 사용하여 공개 할 백엔드에 대한 API 호출을 트리거 할 수 있습니다. 그러나 사용자가 broswer를 닫으면 API 호출이 실행되지 않습니다. 따라서 API를 호출하려면 크론 작업이나 작업 스케줄러로 폴백해야합니다. –

+0

정확히 무엇을 의미합니까 * 웹 사이트의 모든 페이지에서 작동하는 타이머를 구현하는 방법 *? 장바구니가 열려있는 모든 고객이나 제품을 다시 사용할 수 있음을 모든 사람에게 알리는 기능을 제공합니까? 다른 질문에 관해서는 Kimberlee가 더 빠르며 이미 대답했습니다. 안전 장치는 일종의 스케줄러를 주기적으로 실행하고 "클린업"(리눅스의 경우 cron 또는 Windows의 경우 작업 스케줄러)을 시작하는 것입니다. –

+0

@ ViliamAboši 내가 타이머가 모든 페이지에서 작동해야한다고 말했을 때 카트 페이지에 있지 않더라도 홈페이지 (카트 페이지가 아님) 타이머가 계속 감소하고 있음을 예를 들어 설명했습니다 – programmer

답변

1

세션을 사용하는 한 가지 예는 브라우저가 닫힐 때 세션이 만료된다는 것입니다. 좀 더 지속적으로 데이터를 저장하려면 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 
    ); 
} 

?> 
+0

대단히 감사합니다. 작동 할 것 같은데, 시도해보고 피드백을 줄 것입니다. – programmer