PHP에서 33554432 바이트의 메모리 크기 33554432 바이트 (93 바이트를 할당하려고 시도) 오차

StackOverflow https://stackoverflow.com/questions/2461166

  •  20-09-2019
  •  | 
  •  

문제

다음 코드를 삽입했습니다.

$counter = 1;
while($_POST['additional_contact1'] != '' || $_POST['additional_contact2'] != '' || $_POST['additional_contact3'] != '') {
  if($_POST['additional_contact' . $counter] != '') {
    $_SESSION['contact'][$counter]['additional_contact'] = $_POST['additional_contact' . $counter];
    $_SESSION['contact'][$counter]['additional_int_prefix'] = $_POST['additional_int_prefix' . $counter];
    $_SESSION['contact'][$counter]['additional_prefix'] = $_POST['additional_prefix' . $counter];
    $_SESSION['contact'][$counter]['additional_first'] = $_POST['additional_first' . $counter];
    $_SESSION['contact'][$counter]['additional_last'] = $_POST['additional_last' . $counter];
  } else {
    $_SESSION['contact'][$counter]['additional_contact'] = null;
    $_SESSION['contact'][$counter]['additional_int_prefix'] = null;
    $_SESSION['contact'][$counter]['additional_prefix'] = null;
    $_SESSION['contact'][$counter]['additional_first'] = null;
    $_SESSION['contact'][$counter]['additional_last'] = null;
  }

$counter++;
}

그리고이 오류를 받았습니다. 치명적인 오류 : 33554432 바이트의 허용 메모리 크기가 소진되었습니다 (93 바이트를 할당하려고 시도)

INI_SET ()로 메모리 제한을 늘리려 고했지만 여전히 96m에서는 작동하지 않습니다. 너무 많은 메모리가 필요하게하기 위해 내 코드에 무엇이 잘못되고 있습니까? 이 문제를 어떻게 해결할 수 있습니까?

도움이 되었습니까?

해결책

다른 사람들이 말했듯이, 당신은 무한 루프를 만들었습니다. a for 고리 대신에.

for($counter = 1; $counter <= 3; $counter++) {
  if($_POST['additional_contact' . $counter] != '') {
    $_SESSION['contact'][$counter]['additional_contact'] = $_POST['additional_contact' . $counter];
    $_SESSION['contact'][$counter]['additional_int_prefix'] = $_POST['additional_int_prefix' . $counter];
    $_SESSION['contact'][$counter]['additional_prefix'] = $_POST['additional_prefix' . $counter];
    $_SESSION['contact'][$counter]['additional_first'] = $_POST['additional_first' . $counter];
    $_SESSION['contact'][$counter]['additional_last'] = $_POST['additional_last' . $counter];
  } else {
    $_SESSION['contact'][$counter]['additional_contact'] = null;
    $_SESSION['contact'][$counter]['additional_int_prefix'] = null;
    $_SESSION['contact'][$counter]['additional_prefix'] = null;
    $_SESSION['contact'][$counter]['additional_first'] = null;
    $_SESSION['contact'][$counter]['additional_last'] = null;
  }
}

그것에 대해 생각해보십시오 : 당신의 While 루프에서, 당신은 $_POST['additional_contact1'] != '' 아니면 아니에요. 그러나 당신은 다시는 그 가치를 바꾸지 않습니다. 그래서 일단 != '', while 루프의 조건은 항상 true.

다른 팁

루프의 상태가 거짓으로 평가되지 않습니까?

더 이상 메모리를 사용할 수 없을 때까지 메모리를 소비하는 무한 루프가있을 수 있습니다.

while($_POST['additional_contact1'] != '' || $_POST['additional_contact2'] != '' || $_POST['additional_contact3'] != '') {

이 세 가지 값이 신체 내에서 변하지 않으면 생성 및 이티 파트 루프. 사용하고 싶을 수도 있습니다 if 대신, 그러나 나는 전체 맥락을 모른다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top