이 피드에는 10,000 개의 레코드가 있고이 모든 피드를 가져 와서 해당 열을 사용하여 제품 배열을 만드는 루프가 있습니다.Eval - 각 루프에서 시간 실행이 미친 듯이 증가합니다.
지도가 각 소매 업체마다 다르게 생성되므로 제품 이름은 제품 이름이거나 피드의 두 열일 수 있습니다. 아래는 그 예입니다.
내가 직면하고있는 문제는 각 루프가 eval, eval, eval ...을 수행 한 후부터 시작된다는 것입니다. 기능이 전혀없는 경우에도.
Eval에서 참조를 만들고 있습니까? 기능? 임시 변통? 거기에 그 모든 것을 재설정하는 방법? 247750752 읽기/총 :
DEBUG 시간은는
[2014년 5월 14일 10시 21분 8초은] [디버그] 0.48338389396667 메모리 사용 500 개 제품을 변환 108,640분의 500
(.. . 247,751,288 읽기/총 : 108,640분의 50,000
(...)
,691,363)는 [2014년 5월 14일 10시 26분 6초은] [디버그] 6.9182150363922 메모리 사용 500 개 제품을 변환 247749704 읽기/총 :210
는 [2014년 5월 14일 10시 28분 3초은] [디버그] 7.5416939258575 메모리 사용 500 개 제품을 변환 상인 A의 108,640분의 60,000
예
전
array_explode(",",str_replace(" ","",$NAME))[0];
,536 :
array_explode(",",str_replace(" ","",$NAME))[0];
그래서 내 매핑 $ (V)가 추적 값을 사용하여 인덱스 "F"를해야합니다 :이 PHP 함수와 제품 이름을 얻고있다
내가 그지도
foreach($map as $k=>$v) {
(...)
$value = eval('return ' . $v["f"] . ";");
(...)
}
이 내가 내 모든 제품의 배열이 잘 얻을 잘 작동의 평가를 할 수 있지만,이 maddly 내 스크립트의 실행 시간을 증가 후. 이 스크립트를 사용하면 스크립트에서 500 라인/초당 0.4 초의 벌금이 부과됩니다.
피드를 구문 분석하거나 스타일을 지정하기 위해 PHP 코드를 사용하고 있으므로 eval이 필요합니다.
도움 말? :)
주어진 코드는 충분하지 않다 어디에 메모리가 할당 이야기하고 어디 느린 얻을 시작할 수 있습니다. 그러나 우리가 말할 수있는 것은 솔루션을 평가하지 않고 적절한 자원 관리가 필요합니다. – DanFromGermany
루프의 전체 소스 코드를 게시하는 데 신경 쓰지 않아도 될까요? –
안녕하세요, 편집했습니다. 전체 루프가 필요하지 않습니다. 이미 루프가 정상적으로 작동하는지 테스트했습니다. –