이메일을 일괄 발송할 경우 발송 결과를 받아야 하기 때문에 요청 결과를 기다려야 합니다.
PHP가 인터페이스를 비동기적으로 요청한 다음 데이터를 가져온 다음 콜백 함수를 실행하는 방법이 있나요?
이제는 동기식 요청 인터페이스인데, 잠깐만요. 속도가 매우 느립니다. . 그리고 실행 중에 서버 CPU가 증가합니다. .
하나님에게 깨달음을 구하세요
지금 중요한 점은 요청이 반환될 때까지 기다리지 않고 반환이 있을 때 특정 코드 조각을 직접 호출한다는 것입니다. . Redis 대기열이 이미 사용 중이며 스크립트가 실행 중입니다
php는 멀티스레딩 확장을 설치합니다. 직접 확장하여 이를 달성할 수 있으며, js도 단일 스레드로 구현됩니다.
이 라이브러리를 사용하여
reactphp
,workerman
,swoole
비동기 작업을 수행할 수 있습니다이것은 PHP와 함께 제공되는 cur_multi를 사용하여 달성할 수 있습니다
workererman을 사용하는 것이 좋습니다. fsockopen을 사용하면 비동기적으로만 전송되고 반환되지 않습니다! 비동기 처리를 원할 경우 Workererman을 사용하세요. 물론 swoole도 사용할 수 있지만 C가 있습니다. 언어, 일부 오류 메시지는 C에서 발생합니다. C를 알고 있다면 이것을 사용할 수도 있습니다. Workerman을 시작하는 것은 매우 쉽습니다. 구체적인 구현 로직은 다음과 같습니다.
비동기화해야 하는 경우 Workerman을 직접 호출하여 로직을 실행합니다. 이 Workerman은 로직을 실행한 후 작업 작업을 비동기식으로 호출합니다. 노동자의 비동기. 노동자가 직접 돌아옵니다.
작업이 완료되면 작업자에게 전달되고 작업자는 비동기 논리를 실행합니다.
PHP 비동기 통신이 포함된 백업 프레임워크를 제공합니다
github-php-awesome 번역됨
큐
1. Redis 또는 기타 메모리 캐시에 전송해야 하는 정보를 저장합니다.
2.php는 키 토큰에 대한 액세스가 필요한 인터페이스를 제공합니다. 이 인터페이스는 Redis에 캐시된 이메일 데이터를 반복하여 보냅니다.
3. Windows와 Linux 모두에서 예약된 작업을 사용하기 위한 솔루션이 있습니다. 정기적으로 http로 이동하여 이 PHP 인터페이스를 요청하고 전송을 완료하세요. 비동기식과 동일합니다.