פרוט הבעייה
בדקתי ב phpinfo()
לאחר שהורדתי מ128M ל4M .היה שינוי ל4M. אבל הקוד עבד
בשרת הרחוק אכן יש הגבלה ל 24M אבל בהתחשב בכך שבשרת המקומי הקוד עובד על פחות,זאת כניראה לא הבעייה.
צרפתי את הקוד. השגיאה מצביעה על השורה הנ"ל:
array_splice($_SESSION["cart_array"], $i-1, 1, array(array("item_id" => $pid, "quantity" => $each_item['quantity
וכל זה קורה כאשר אני מוסיף מוצר לסל הקניות בסדר הבא:
מוסיף מוצר א.
מוסיף מוצר ב
ורק לאחר חזרה להוספת מוצר שכבר הוספתי אותו לאחר הוספת מוצר אחר, בדוגמה זאת מוצר א,
נוצר freezing באתר ולאחר מכן מופיעה השגיאה.
בכל סדר אחר של הוספת מוצר לא קיימת הבעייה. וכל זה קורה רק בserver החיצוני.
Section 1 (if user attempts to add something to the cart from the product page
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
if (isset($_POST['pid'])) {
$pid = $_POST['pid'];
$wasFound = false;
$i = 0;
// If the cart session variable is not set or cart array is empty
if (!isset($_SESSION["cart_array"]) || count($_SESSION["cart_array"]) < 1) {
// RUN IF THE CART IS EMPTY OR NOT SET
$_SESSION["cart_array"] = array(0 => array("item_id" => $pid, "quantity" => 1));
} else {
// RUN IF THE CART HAS AT LEAST ONE ITEM IN IT
foreach ($_SESSION["cart_array"] as $each_item) {
$i++;
while (list($key, $value) = each($each_item)) {
if ($key == "item_id" && $value == $pid) {
// That item is in cart already so let's adjust its quantity using array_splice()
array_splice($_SESSION["cart_array"], $i-1, 1, array(array("item_id" => $pid, "quantity" => $each_item['quantity'] + 1)));
$wasFound = true;
} // close if condition
} // close while loop
} // close foreach loop
if ($wasFound == false) {
array_push($_SESSION["cart_array"], array("item_id" => $pid, "quantity" => 1));
}
}
header("location: cart.php");
exit();
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Section 2 (if user chooses to empty their shopping cart)
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
if (isset($_GET['cmd']) && $_GET['cmd'] == "emptycart") {
unset($_SESSION["cart_array"]);
}