linux - crontab 타이머를 시뮬레이션하고 PHP 및 MySQL로 메시지 큐를 구현하는 데 문제가 있습니까? ?
巴扎黑
巴扎黑 2017-05-19 10:07:28
0
4
707

예를 들어 휴대폰 문자 메시지를 일괄적으로 보내는 기능을 만들어야 합니다. 이를 위해 for 루프를 사용하면 문자 메시지 수가 많을 때 시간이 많이 걸릴 뿐만 아니라 매우 낮은 성공률.

그래서 PHP와 MySQL을 사용하여 메시지 큐를 구현하고 문자 메시지를 하나씩 보내려고 생각했습니다.

먼저 다음 필드를 포함하는 SMS 데이터 테이블을 만듭니다.
id,
phone, //휴대폰 번호
content //SMS 콘텐츠
전송해야 하는 문자 메시지와 휴대폰 번호를 SMS 테이블에 저장합니다.

구현된 코드는 다음과 같습니다.
<?php
while(true){

으아악

}

echo '전송 완료! ';
?>

예를 들어, 백그라운드에 보내기 버튼이 있으면 위 프로그램이 실행됩니다. 10초마다 데이터베이스에서 데이터 조각을 가져와 문자 메시지를 보냅니다.

문제: 보내기 버튼을 클릭한 다음 다른 페이지를 직접 클릭하여 다른 작업을 수행하면 해당 페이지를 계속 클릭하고 보내기가 완료될 때까지 기다리지 않고 떠나면 위 프로그램이 계속 실행됩니다. 아니면 다른 페이지로 가면 루프가 튀어나와서 문자가 안오네요

巴扎黑
巴扎黑

모든 응답(4)
淡淡烟草味

PHP는 단일 스레드입니다. 즉, 실행을 시작하자마자 완전히 실행될 때까지 기다리거나 미리 중단해야 하며 동시에 두 가지 액세스를 수행할 수 없습니다. 버튼을 클릭한 후 비동기적으로 처리하고 다른 작업을 수행하기 위해 직접 점프해야 하는 경우 비동기적으로 처리하려는 작업을 처리하려면 Swoole 서비스가 필요합니다.

给我你的怀抱

이런 경우에는 백그라운드 웹페이지에 넣지 않고 명령줄 모드에서 바로 실행하시면 됩니다. 그런 다음 데이터 없이 종료되는 상위 코드는 일정 시간 동안 절전 모드로 변경됩니다.

世界只因有你

PHP-Cli 모드를 살펴볼 수 있습니다. MOOC.com에 동영상이 있습니다. MySQL은 대기열을 통해 이메일 전송을 시뮬레이션하며 그 효과는 주요 질문과 유사합니다.

给我你的怀抱

원본 포스터의 php+mysql이 맞다고 생각하는데, cron 작업을 계속 사용해야 합니다. cron 작업은 XX초마다 실행되도록 스크립트를 설정하는 것입니다.

크론탭을 포기해야 한다면. 그렇다면 다음 코드를 추천해주세요

으아아아
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿