>  Q&A  >  본문

getResult 원칙 요청에서 PHP 병렬 처리 생성

PHP8/Symfony6 환경에서 일종의 멀티스레딩을 수행하고 싶은데 다음과 같이 작동합니다.

약 백만 행을 제공하는 원칙적인 요청을 하고 있습니다

행을 동시에 처리하기 위해 여러 병렬 프로세스를 만들고 싶습니다. 내 요청은 교리 개체를 제공하는 getResult()를 통해 이루어집니다. 개체 배열을 매개변수로 사용하여 스레드를 생성하는 방법이 있습니까? 그러면 내 "대기열"이 데이터로 채워질 때마다 스레드를 생성하시겠습니까?

"pthreads" 또는 "popen"에 대한 정보를 찾았지만 주제가 좀 오래되었기 때문에 여전히 관련성이 있는지 잘 모르겠습니다

P粉649990163P粉649990163421일 전540

모든 응답(1)나는 대답할 것이다

  • P粉211273535

    P粉2112735352023-09-15 10:29:17

    이 경우 Doctrine이 수행하는 작업 중 하나는 데이터 콘텐츠로 클래스를 수화하는 것입니다. 따라서 수백만 개의 레코드가 모두 클래스로 변환되어 메모리에 보관됩니다. 따라서 몇 가지 제안 사항은 다음과 같습니다.

    1. 대규모 쿼리에서는 getResult를 사용하지 마세요. 대신, 이 개체로 뭔가를 하고 싶다면 다음과 같이 페이지를 매기고 엔터티 관리자를 지워보세요.
    으아악
    1. 직접 쿼리하려면 while을 사용하세요.
    으아악

    fetchAll 方法一次获取所有用户,但请注意,如果您的查询返回太多用户,则可能会耗尽内存。使用上面的 while 루프를 사용할 수도 있습니다. 한 번에 한 명의 사용자만 메모리로 가져오므로 메모리 성능이 더 좋습니다.

    으아악

    누군가 댓글을 달았듯이

    를 사용할 수 있습니다.

    회신하다
    0
  • 취소회신하다