PHP는 매우 긴 데이터의 메모리 제한 문제를 처리합니다.
迷茫
迷茫 2017-05-27 17:42:31
0
5
756

현재 특정 영역을 스캔하는 여러 레이더 장치가 있습니다. 스캔 후 약140만포인트(각 포인트에는 4가지 속성 포함)의 데이터가 반환됩니다.
그런 다음 레이더 장비는 데이터를,分隔的字符串:"x1,y1,a1,p1,x2,y2,a2,p2......x1400000,y1400000,a1400000,p1400000"
로 연결합니다. 이 문자열의 크기는 수십 메가바이트, 100메가바이트 미만이어야 합니다.
PHP 코드는 다음과 같이 처리됩니다:

으아악

메모리 소모에 대해 잘 모르고, 이렇게 많은 양의 데이터를 처리하는 것은 처음입니다
레이더에서 전송되는 데이터가11W그룹 포인트(약3MB데이터)에 불과할 때, 성공적으로 수신하여 처리합니다
데이터가 조금 더 커지면메모리 제한은 128M입니다
인터넷에서 몇 가지 방법을 확인해 보니 대부분memory_limit=-1php.ini파일.code>php.ini文件中memory_limit=-1
可是改了之后仍然无法传输
目前跟雷达端商量的是他每次最多给我传10W组点,然后再多个一个参数本次传输还剩多少点변경한 후에도 여전히 전송이 되지 않습니다
현재 레이더 단말기와 논의한 바에 따르면 각각 최대
10W

그룹 포인트를 보낼 수 있다고 합니다. 시간을 입력하고 이 전송에 몇 개의 포인트가 남아 있습니까?매개변수를 추가하면 PHP가 이를 수신한 후 반환 값으로 제공되며 그는 다시 전화하여 계속해서 전송합니다. 하지만 이렇게 계산하면 데이터 세트를 전송하는 데 총 14~15번의 전송이 필요하며... 아직 실현 가능성은 확실하지 않습니다 사랑하는 여러분, 개발 중에 이런 문제를 어떻게 처리하시나요? ? 온라인 대기 중입니다. . .
迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

모든 응답 (5)
Ty80

으아악

    phpcn_u1582

    질문: gzip이 활성화되어 있나요? 이러한 종류의 순수 JSON 데이터는 활성화된 후 압축률이 높습니다. 메모리 제한을 변경한 후에도 네트워크 연결 시간이 초과될 수 있습니다.

      滿天的星座
      1. 웹 서버가 받는 본문에는 길이 제한이 있습니다. nginx-client_max_body_size

      2. 와 같이 너무 길면 허용되지 않습니다.
      3. 일괄 전송은 웹 모드에서 더 나은 솔루션입니다

      4. 더 좋은 방법은 웹 모드에서 다양한 제한이 없고 더 효율적인 소켓 바이너리 전송을 사용하는 것입니다

        仅有的幸福

        먼저 문자열은 메모리를 많이 차지합니다. 이를 배열로 변환하면 메모리를 많이 차지하게 됩니다.

        필요에 따라 마지막 단계는 json으로 변환하여 파일로 저장하는 것입니다. Json도 문자열이므로 직접 문자열로 처리해 보는 것은 어떨까요?

        php7의 경우 preg_replace를 사용할 수 없으며 preg_replace_callback으로 바꿔야 합니다

        으아악
          伊谢尔伦

          메모리 한도를 늘리고 게시물의 데이터량을 늘려보세요. . 기본적으로 수백 메가바이트를 처리하는 데에는 문제가 없습니다

            최신 다운로드
            더>
            웹 효과
            웹사이트 소스 코드
            웹사이트 자료
            프론트엔드 템플릿
            회사 소개 부인 성명 Sitemap
            PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!