나는 그것이 옳다는 것을 모른다. ~ 25000 개 루프 후foreach 수는 PHP에서 제한됩니까?
$x = explode("\n", $y); // Making $x has length 65000
foreach ($x as $k) {
//Some code here
}
그리고 종종 내 스크립트 자동 정지 : 나는이 같은 내용으로 PHP 파일이 있습니다. 왜? PHP 기본 구성입니까?
나는 그것이 옳다는 것을 모른다. ~ 25000 개 루프 후foreach 수는 PHP에서 제한됩니까?
$x = explode("\n", $y); // Making $x has length 65000
foreach ($x as $k) {
//Some code here
}
그리고 종종 내 스크립트 자동 정지 : 나는이 같은 내용으로 PHP 파일이 있습니다. 왜? PHP 기본 구성입니까?
이 문제가 있기 때문에 2 가지 이유
스크립트 실행 시간이 할당보다 더 할 수 있습니다 ... php.ini 파일에 max_execution_time
을 늘려보십시오. 이것은 상기 foreach 루프에서의 php.ini
내 의견의 멋진 사본;). +1 tho : P –
@Allendar lolz ..하지만 사실 이것은 문제의 해결책입니다 ... 그래서 나는 다른 대답이 없습니다 ... 저를 새로운 PHP 함수 memory_get_usage()에 소개해 주셔서 고맙습니다 ... 그것을 들었지만 결코 사용하지 않았다. – alwaysLearn
Truetrue : D. 다행히 우리는 모두 질문 및 'StackOverflow에 대한 답변'에서 배울 수 있습니다. :) –
PHP의 기본 메모리 제한은 8MB입니다. 이는 무제한이기 때문에 기본 PHP 컴파일러가 아닌 표준 배포판을 의미합니다.
$x = array();
for ($i = 0; $i < 65000; $i++) {
$x[$i] = $i;
}
echo (memory_get_peak_usage()/1024).'<br />';
echo (memory_get_usage()/1024).'<br />';
echo count($x);
그것은 출력 : :이 코드를 수행 할 때
는
9421.9375
9415.875
65000
이 테스트하기를, 나는 내 기억 제한 상점 증가했습니다. 그러나 더 많은 메모리를 할당 할 수 없으면 오류로 중단됩니다.
for ($i = 0; $i < 1e6; $i++) { // 1 Million
$x[$i] = $i;
}
보고서가 다시 표시됩니다.
Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 32 bytes) in /Applications/MAMP/htdocs/run_app.php on line 5
은 개인적인 용도 (I 16 기가 바이트 RAM을 가지고, 그래서 아무 문제가 없다) 나는이 시작 코드 사용 : 당신이 당신의 한계 당신이 그것을 원하는 방식을 증가시킬 수
// Settings
ini_set('error_reporting', E_ALL); // Shows all feedback from the parser for debugging
ini_set('max_execution_time', 0); // Changes the 30 seconds parser exit to infinite
ini_set('memory_limit', '2048M'); // Sets the memory that may be used to 512MegaBytes
이 방법을. 전용 서버가 없다면 온라인 호스트에서 작동하지 않습니다. 당신이하는 일을 모르는 경우 이것은 매우 위험합니다. RAM/리소스가 부족한 경우 무한 루프가 브라우저 또는 OS에 충돌을 일으 킵니다.
에 memory_limit
의 값을 변경하려고 참조로 배열을 전달 .FOR 스크립트
메모리 제한 할당보다 더있다. PHP에서는 foreach가 루프를 시작하기 전에 배열 복사본을 만듭니다. 따라서 배열이 100K이면 foreach는 처리를 위해 적어도 100K를 할당합니다. 참조로 전달하면 주소의 크기에만 관심을 가질 수 있습니다.
PHP는 메모리 제한에 도달했거나 시간 만료 된 경우에만 중단됩니다. 스크립트의 소요 시간과 메모리 사용량은 얼마나됩니까? (http://www.php.net/function.memory-get-usage.php) –
음, 내 루프의 사용하지 않는 변수를 해제하려고 시도 할 것입니다. – user2228956