2017-04-10 1 views
0

Ich brauche Hilfe zum Ablauf eines Warenkorbes
Angenommen, wir haben einen Einkaufswagen in einer E-Commerce-Website, und ein Benutzer fügt ein Produkt in seinen Warenkorb das Problem ist, dass Aus dem Inventar sollten wir die Menge dieses Produkts dekrementieren, weil es von einem Benutzer gehalten wird.
Die Idee ist, dass wir einen Timer im Warenkorb implementieren, wenn dieser Timer abläuft, hält der Benutzer dieses Produkt nicht mehr.Wie Warenkorb nach einer begrenzten Zeit ablaufen

Meine Fragen sind:

  • Wie ein Timer zu implementieren, die
  • auf allen Seiten auf der Website arbeiten, wie das Ereignis mit der Aktualisierung der Bestandsaufnahme auszulösen, sobald die Zeit abgelaufen ist.

Hope meine Erklärung war klar. Vielen Dank für Ihre Zeit.

+0

Ich benutze Cron Job für die Freigabe der Menge zurück zum Produkt. Sie können einen Timer verwenden, der Javascript verwendet, um einen API-Aufruf an das Backend auszulösen. Wenn der Benutzer den Browser jedoch schließt, wird der API-Aufruf nicht ausgelöst. Sie müssen also immer noch auf einen Cron-Job oder einen Job-Scheduler zurückgreifen, um die API aufzurufen. –

+0

Was genau meinen Sie mit * Wie implementiert man einen Timer, der auf allen Seiten der Website * funktioniert? Dass es mit jedem Kunden funktioniert, der einen offenen Warenkorb hat oder dass Sie jedem mitteilen, dass das Produkt wieder verfügbar ist? Was die andere Frage betrifft, war Kimberlee schneller und hat es bereits beantwortet. Die Safes verwenden eine Art Scheduler, um periodisch zu starten und Ihre "Bereinigung" (Cron für Linux oder Taskplaner für Windows) zu starten. –

+0

@Viliamaboši als ich sagte, dass der Timer über alle Seiten hinweg funktionieren sollte, meinte ich zum Beispiel, wenn ich auf der Homepage bin (nicht auf der Warenkorbseite) der Timer ist immer noch decremet, obwohl ich nicht in der Warenkorbseite – programmer

Antwort

1

Ein Beispiel mit Sitzung, vergessen Sie nicht, dass die Sitzung abläuft, wenn der Browser geschlossen wird. Wenn Sie einen beständigeren Datenspeicher benötigen, verwenden Sie Cookies oder 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

Vielen Dank, es scheint, als ob es funktioniert, ich werde es versuchen und Feedback geben – programmer

Verwandte Themen