セッションを使用する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
);
}
?>
私は製品に数量をリリースするためにcronジョブを使用しています。 JavaScriptを使用してタイマーを使用して、公開するバックエンドへのAPI呼び出しをトリガーすることができます。ただし、ユーザーがbroswerを閉じると、API呼び出しはトリガーされません。したがって、APIを呼び出すには、まだcronジョブまたはジョブスケジューラーにフォールバックする必要があります。 –
正確にはどういう意味ですか?*ウェブサイトのすべてのページで機能するタイマーを実装するにはどうすればいいですか?カートが開いているすべての顧客や、製品が再び利用可能であることを誰にでも通知することができますか?もう一つの質問については、キンバリーは早くてすでに答えていました。セーフティは、定期的に実行し、 "クリーンアップ"(Windows用のLinuxまたはタスクスケジューラ用のcron)を開始するために、何らかのスケジューラを使用することです。 –
@ViliamAbošiタイマーはすべてのページで動作するはずだったと言いましたが、カートページではないにもかかわらず、私がホームページ(カートページではない)でタイマーが減少している例を示しています – programmer